Visual Studio Mac Streaming BasicHttpBinding不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio Mac Streaming BasicHttpBinding不起作用相关的知识,希望对你有一定的参考价值。

我有一个在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方法调用也不会返回,直到整个文件被下载。它表现得像仍然处于缓冲模式。

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

答案

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

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

以上是关于Visual Studio Mac Streaming BasicHttpBinding不起作用的主要内容,如果未能解决你的问题,请参考以下文章

text Visual Studio代码快捷方式(Mac)

Visual Studio 2022 for Mac v17.0 发布,离线安装包下载

Visual Studio for Mac 2017 初体验

visual studio for mac在线安装网络错误

visual studio code的mac版本,有人能分享下吗?

从 Visual Studio 使用 Xamarin 创建 Mac 应用