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不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2022 for Mac v17.0 发布,离线安装包下载
Visual Studio for Mac 2017 初体验