Visual Studio Mac Streaming BasicHttpBinding不起作用

问题描述 投票:0回答:1

我有一个在Windows和Mac上运行的跨平台应用程序。它在.NET 4.5.2上使用WCF。在设置文件的BasicHttpBinding配置中,我设置transferMode =“Streaming”。我们正在使用此服务下载大文件。

在Windows上一切正常。 WCF方法调用立即返回,然后当我从MessageContract对象的Stream成员读取时,该文件被流式传输为例外。

当我在Visual Studio for Mac中运行相同的应用程序时,我有2个问题。第一个问题是绑定中的传输模式是缓冲而不是流式传输。

我通过在创建频道后在代码中更改它来解决这个问题。这是我用来做的代码。也许这就是问题所在:

    private IDataService CreateClient()
    {
        Channel = new ChannelFactory<IDataService>(BindingId);
        var binding = Channel.Endpoint.Binding as BasicHttpBinding;
        binding.TransferMode = TransferMode.Streamed;
        Channel = new ChannelFactory<IDataService> (binding, Channel.Endpoint.Address);
        var client = Channel.CreateChannel();
        return client;
    }

请注意我如何读取绑定,更改传输模式,然后使用新绑定创建新通道。这似乎是从设置文件中获取相同设置的最佳方式,但切换传输模式。

当进行下载方法调用时,我能够在调试器中看到绑定上的传输模式是Streaming,其中它是Buffered之前的位置。

我在这一点上遇到的问题是,即使传输模式是Streamed,下载WCF方法调用也不会返回,直到整个文件被下载。它表现得像仍然处于缓冲模式。

任何想法如何解决这一问题?

stream mono xamarin.mac basichttpbinding
1个回答
0
投票

看起来流设置在我们正在使用的.net 4.5.2的Xamarin实现中不起作用。不确定它是否适用于以后的版本。

我最后添加了一个REST api,仅用于下载大文件...

© www.soinside.com 2019 - 2024. All rights reserved.