Silverlight меняет io.Stream на byte[]
-
06-07-2019 - |
Вопрос
Я создал службу WCF для загрузки изображений, которая принимает System.IO.Stream
в качестве входного параметра и использую потоковую передачу.Когда я добавил ссылку на службу в проект Silverlight, он автоматически изменил параметр моего метода WCF с System.IO.Stream
к byte[]
.Может ли кто-нибудь подсказать, есть ли способ обойти это, чтобы я мог получить System.IO.Stream
тип, а не byte[]
.
заранее спасибо
Решение
Можете ли вы проверить, что вы не используете ни одну из квот читателя в сервисе? Вы можете попробовать увеличить их все, чтобы увидеть, решит ли это вашу проблему.
Другие советы
Silverlight не поддерживает режим потоковой передачи: http://forums.silverlight.net /forums/t/119340.aspx р>
Поэтому я думаю, что вы застряли с получением байтового массива.
Я думаю, вам следует установить для свойства TransferMode
вашего basicHttpBinding
правильное значение, как описано в эта статья . Затем снова добавьте ссылку на службу в приложение Silverlight.
Даже я боролся с той же проблемой.Наконец я нашел решение сам.Все, что вы можете сделать, это:
- объявите принимающий параметр как массив строк в службе 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.
}