Поток вместо байта []

Я строю простой 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. Эта вещь не входит в мою голову.

0 ответов

Другие вопросы по тегам