You can simplify your code quite a bit:
byte writeBuffer = File.ReadAllBytes("filename.txt");
port.Write(writeBuffer, 0, writeBuffer.Length);
But it won't make any difference to data coming out of the serial port.
1) Are you sure no data is being written? Why? How have you checked?
2) If you don't have any data, then:
2a) Is the port connected to a physical serial port, such as COM1? Are you checking COM1, and have you made sure that you can write to it and talk to the modem with a terminal program (hyperterminal or similar)?
2b) Have you configured Handshaking? Is so, turn it off (it is off by default)
2c) Have you enabled RTS and DTR? Try it.
If this doesn't help, edit your question and post the code fragments you use for port create and initialize - we may be able to help further when we have more info.
"Thanks Griff, I can see what is being sent and received from the serial port , using a serial port monitoring tool. Yes I have tested COM9 with hyperterminal etc. I have updated my question with the flow control settings. Note the modem specifies hardware flow control."
Good! So you genuinely have nothing coming out, but you can transmit with Hyperterminal. Try disabling the Handshake - the Modem may specify it but if it ain't there for testing it doesn't matter too much - you can re-enable it when some data is being transferred. It may be cabling between you and the modem - if you don't have the RTS/CTS and DTR/DTE pairs enabling handshake will just disable the port transmit.