gpt4 book ai didi

wcf - 将流上传到 WCF IIS 7 托管服务不起作用

转载 作者:行者123 更新时间:2023-12-04 16:36:34 26 4
gpt4 key购买 nike

我有一个设置为在 IIS 7 下运行的 wcf 服务。我将服务设置为传输模式的流式传输。
当我在控制台应用程序中自行托管服务时,一切似乎都正常。但是当客户端连接到 iis 托管服务时,它似乎正在缓冲,客户端最终超时。我已经使用 fiddler 来确定这个客户端超时发生在甚至发出 http 请求之前。

这是服务器绑定(bind)。

var binding = new CustomBinding();
binding.Elements.Add( new TextMessageEncodingBindingElement()
{
MessageVersion = MessageVersion.Soap12WSAddressing10
} );

var secBinding = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
secBinding.AllowInsecureTransport = true;
binding.Elements.Add( secBinding );
binding.Elements.Add( new HttpTransportBindingElement()
{
TransferMode = TransferMode.Streamed,
MaxReceivedMessageSize = Int32.MaxValue,

} );

和客户端绑定(bind):
var binding = new CustomBinding();
binding.Elements.Add( new TextMessageEncodingBindingElement()
{
MessageVersion = MessageVersion.Soap12WSAddressing10
} );

var secBinding = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
secBinding.AllowInsecureTransport = true;
binding.Elements.Add( secBinding );
binding.Elements.Add( new HttpTransportBindingElement()
{
TransferMode = TransferMode.Streamed,
MaxReceivedMessageSize = Int32.MaxValue,
MaxBufferSize = 400
} );

顺便说一句,连接超时,因为流是无限的,服务器应该读取前几个字节,然后关闭流。

最佳答案

最近,我们遇到了同样的问题。当您在 IIS 下托管服务时,无论您是否启用流式传输,您的服务都会在发送之前缓冲整个消息。这样做的原因是,当在服务上启用流式传输时,WCF 似乎没有将 Response.BufferOutput 设置为“false”(默认为 true)。可以在此处找到解决方法:

http://weblogs.asp.net/jclarknet/archive/2008/02/14/wcf-streaming-issue-under-iis.aspx

关于wcf - 将流上传到 WCF IIS 7 托管服务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com