Поток вместо байта []
Я строю простой WCF для потоковой передачи файла на Android (используя Xamarin.Android). Для этого я настроил службу как BasicHttpBinding и использовал TransferMode=Streamed
, Для простого тестирования я использую простое приложение WPF для тестирования сервиса, прежде чем развернуть его на Android.
Первая проблема, с которой я столкнулся: - Если я включаю службу в WPF в качестве ссылки на службу, мне все равно нужно настроить привязку клиента на стороне клиента. Но на стороне сервера также есть конфигурация клиента. Итак, почему он не приносит мне конфигурацию с сервера? Это WebConfig сервера:
<client>
<endpoint binding="basicHttpBinding" bindingConfiguration="BindingStreamed"
contract="Web_Explorer.IWeb_Explorer" name="" kind="" endpointConfiguration="" />
</client>
<bindings>
<basicHttpBinding>
<binding name="BindingStreamed" maxBufferSize="67108864" maxReceivedMessageSize="67108864"
transferMode="Streamed" messageEncoding="Text" />
</basicHttpBinding>
</bindings>
<services>
<service name="Web_Explorer.WExplorer">
<endpoint address="Explorer" binding="basicHttpBinding" bindingConfiguration="BindingStreamed"
name="basicHttp" contract="Web_Explorer.IWeb_Explorer" />
</service>
</services>
Я решил это путем настройки клиентской части. Все нормально.
После этого я добавил службу в своем приложении WPF в качестве веб-службы (единственная опция, доступная в Xamarin.Android). Проблема в следующем:
- Один из моих классов возвращает Stream
тип. После того, как я изменил на WebReference, возвращение не Stream
больше, но byte[]
(на стороне клиента). Я прочитал, что работает, но мой вопрос, почему он изменил тип возврата? И из исследований, которые я сделал, если я использую byte[]
как возвращение, я должен ждать завершения загрузки, чтобы работать с ним, верно? Код:
[ServiceContract()]
public interface IWeb_Explorer
{
[OperationContract]
Stream LeArquivo();
}
public Stream LeArquivo()
{
Expl.sr = new StreamReader(@"C:\Viagens3.xml").BaseStream;
return Expl.sr;
}
Я, наверное, написал много бессмысленных вещей здесь. Но я просто не могу выучить WCF. Эта вещь не входит в мою голову.