Преобразуйте его в int ...
FileByteStream.Read(buffer, 0, Convert.ToInt32(outputMessage.FileByteStream.Length))
Вероятно, это int, потому что эта операция блокируется до тех пор, пока она не закончит чтение ... так что если вы находитесь в большом объемеприложения, вы можете не захотеть блокировать при чтении большого файла.
Если то, что вы читаете, не имеет разумного размера, вы можете рассмотреть возможность циклического считывания данных в буфер (пример из MSDN docs ):
//s is the stream that I'm working with...
byte[] bytes = new byte[s.Length];
int numBytesToRead = (int) s.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
Таким образом, вы не выполняете приведение, и если вы выберете достаточно большое число для чтения в буфер, вы пройдете только черезwhile
цикл один раз.