Даже я боролся с той же проблемой. Наконец я получил решение сам. Все, что вы можете сделать, это:
- объявляет принимающий параметр как строковый массив в службе WCF.
- преобразовать массив байтов в строковый массив на месте клиента.
- После отправки преобразованного байтового массива в виде строкового массива снова преобразуйте его обратно в байтовый массив.
например. на стороне WCF:
[DataContract]
Class FileInfo
{
[DataMember]
string filename;
[DataMember]
string[] StrArr;
}
функция получения:
public void uploadFile(FileInfo fi)
{
int len=fi.StrArr.len;
byte[] myFileByte=new byte[len];
for(int i=0;i<len;i++)
{
myFileByte[i]=Convert.ToByte(fi.StrArr[i]);
}
//your uploaded File buffer is ready as myFileByte
//proceeding operations are most welcome here......
.........
}
На стороне клиента:
public void UploadMyFile()
{
//Take the InputStream from the selected File as iStream;
int len=(int)iStream.length;
byte[] buffer=new byte[len];
string[] MyStrArr=new string[len];
for(int i=0;i<len;i++)
{
MyStrArr[i]=Convert.ToString(buffer[i]);
}
//Here your string array is ready to send to the WCF Service....
//I m confident this code will work perfectly with some file limitation consideartions.
}