Visual Studio Mac 流式传输 BasicHttpBinding 不工作
Visual Studio Mac Streaming BasicHttpBinding not working
我有一个 运行 在 Windows 和 Mac 上运行的跨平台应用程序。它在 .NET 4.5.2 上使用 WCF。在设置文件的 BasicHttpBinding 配置中,我设置了 transferMode="Streaming"。我们正在使用此服务下载大文件。
在 Windows 上一切正常。 WCF 方法立即调用 returns,然后当我从 MessageContract 对象的 Stream 成员中读取时,文件被流式传输为异常。
当我 运行 在 Visual Studio 中为 Mac 使用相同的应用程序时,我遇到了 2 个问题。第一个问题是绑定中的传输模式是Buffered而不是Streamed。
我在创建频道后通过更改代码来解决这个问题。这是我用来执行此操作的代码。可能是这个问题:
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;
}
请注意我是如何读取绑定、更改传输模式然后使用新绑定创建新频道的。这似乎是从设置文件中获取相同设置但切换传输模式的最佳方式。
调用下载方法后,我可以在调试器中看到绑定的传输模式是 Streamed,之前是 Buffered。
此时我遇到的问题是,即使传输模式是流式传输,下载 WCF 方法调用也不会 return 直到整个文件下载完毕。它的行为就像它仍处于缓冲模式。
有什么解决办法吗?
我们使用的 .net 4.5.2 的 Xamarin 实现中的流设置似乎不起作用。不确定它是否适用于更高版本。
我最后添加了一个 REST api 只是为了下载大文件...
我有一个 运行 在 Windows 和 Mac 上运行的跨平台应用程序。它在 .NET 4.5.2 上使用 WCF。在设置文件的 BasicHttpBinding 配置中,我设置了 transferMode="Streaming"。我们正在使用此服务下载大文件。
在 Windows 上一切正常。 WCF 方法立即调用 returns,然后当我从 MessageContract 对象的 Stream 成员中读取时,文件被流式传输为异常。
当我 运行 在 Visual Studio 中为 Mac 使用相同的应用程序时,我遇到了 2 个问题。第一个问题是绑定中的传输模式是Buffered而不是Streamed。
我在创建频道后通过更改代码来解决这个问题。这是我用来执行此操作的代码。可能是这个问题:
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;
}
请注意我是如何读取绑定、更改传输模式然后使用新绑定创建新频道的。这似乎是从设置文件中获取相同设置但切换传输模式的最佳方式。
调用下载方法后,我可以在调试器中看到绑定的传输模式是 Streamed,之前是 Buffered。
此时我遇到的问题是,即使传输模式是流式传输,下载 WCF 方法调用也不会 return 直到整个文件下载完毕。它的行为就像它仍处于缓冲模式。
有什么解决办法吗?
我们使用的 .net 4.5.2 的 Xamarin 实现中的流设置似乎不起作用。不确定它是否适用于更高版本。
我最后添加了一个 REST api 只是为了下载大文件...