自托管WCF服务在闲置几个小时后没有响应

时间:2013-06-29 17:51:37

标签: wcf visual-studio-2012 self-hosting

我在控制台应用程序中托管了WCF服务,该应用程序预计全天候运行并响应来自多个应用程序的请求。如果连续请求或甚至在4小时的空闲时间后获得请求,它的效果很好。写入托管服务的代码如下:

    static void Main(string[] args)
    {
        using (ServiceHost host = new ServiceHost(typeof(abcdService)))
        {
            host.Open();
            Console.ReadLine();
            host.Close();
        }
    }

在WCF服务中,我将输出写入控制台。当它抛出超时错误时,我可以看到WCF服务中的方法从未收到请求。

是否需要进行任何设置才能使自托管WCF服务即使在几个小时的空闲时间后也能响应简单的呼叫?

我收到的错误如下:

请求频道在00:00:59.9989999之后等待回复时超时。增加传递给Request的调用的超时值或增加Binding上的SendTimeout值。分配给此操作的时间可能是较长超时的一部分。 ---> System.TimeoutException:''的HTTP请求已超过分配的超时00:01:00。分配给此操作的时间可能是较长超时的一部分。 ---> System.Net.WebException:操作已超时。中止测试执行。

注意:当我重新启动托管WCF服务的控制台应用程序时,它会再次正常运行。

1 个答案:

答案 0 :(得分:1)

您的请求可能会在处理之前在服务器上排队,然后超时。

1)在WCF服务中尝试throttling

2)尝试使用PerCall使用以下命令删除界面中的会话

[ServiceContract(Namespace="namespace", SessionMode=SessionMode.NotAllowed)]

合同类实现接口

ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

您应该能够启用跟踪以确切了解正在发生的事情。