默认情况下,WCF中的Http传输通道使用持久HTTP连接。如何控制这些连接的保持连接超时?默认值为100s。我通过监控Procmon中的应用程序发现了这一价值。我没有在http传输绑定元素中找到配置此超时的任何设置。有没有什么.NET类可以控制超时?
发布于 2010-08-23 07:26:53
发布于 2013-08-27 23:44:52
我找到了解决这个问题的办法。问题是底层内核http.sys有它自己的超时,它会中断连接。
http://mmmreddy.wordpress.com/2013/07/11/wcf-use-of-http-transport-sharing-persistent-tcp-sessions/
netsh http add timeout timeouttype=idleconnectiontimeout value=120
此外,此问题与此What 130 second timeout is killig my WCF streaming service call?类似
发布于 2010-08-26 02:52:11
在我看来,您似乎想要调整Keep-Alive
HTTP头。您应该阅读HTTP keep-alive上的this article,并首先确定这是否真的值得您花时间。
如果是,请尝试创建Message Inspector。这应该允许您修改发出的每条消息的HTTP标头:
public class KeepAliveMessageInspector : IClientMessageInspector
{
// ...
public object BeforeSendRequest(
ref System.ServiceModel.Channels.Message request,
System.ServiceModel.IClientChannel channel)
{
// Add/modify the Keep-Alive header
var httpRequestMessage = new HttpRequestMessageProperty();
httpRequestMessage.Headers.Add("Keep-Alive", "9000");
request.Properties.Add(
HttpRequestMessageProperty.Name, httpRequestMessage);
return null;
}
// ...
}
https://stackoverflow.com/questions/3466490
复制相似问题