如何在WCF中设置HTTP连接的保持活动间隔?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

WCF中的Http传输通道默认使用持久HTTP连接。如何控制这些连接的保持活动超时?默认值是100秒。通过在Procmon中监控应用程序,我发现了这个价值。我没有在http传输绑定元素中找到任何配置此超时的设置。有没有可以控制超时的.NET类?

提问于
用户回答回答于

这听起来像你想调整Keep-AliveHTTP标头。你应该阅读这篇关于HTTP保持活跃的文章,并首先确定这是否值得你花时间。

如果是,请尝试创建一个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;
    }

    // ...
}

扫码关注云+社区