IIS停止连接到WCF服务,直到应用程序池被回收

时间:2015-03-02 18:33:18

标签: asp.net wcf iis application-pool endpointnotfoundexception

我在IIS 8.5上托管了一个ASP.NET MVC应用程序。该站点将在几小时到几天之间运行,没有问题但最终在尝试连接到另一台机器上的net.tcp托管的WCF服务时开始获取EndpointNotFoundException。

如果我尝试使用不同的应用程序池,控制台应用程序等从IIS计算机连接到WCF服务,则它们都会连接而不会出错。并非所有连接尝试都失败,只是其中大部分都失败了。

一旦我回收应用程序池,一切都会重新开始工作。

我在事件查看器中看不到任何内容,Elmah在EndpointNotFoundException开始显示之前没有显示其他错误。

我将所有WCF调用包装在try / catch块中,这些调用将执行必要的close / abort命令以确保所有客户端都已正确关闭。这是正在使用的代码。

try
{
    action();
}
finally
{
    try
    {
        client.Close();
    }
    catch
    {
        client.Abort();
    }
}

我还创建了一个监视服务器的应用程序。如果它发现服务器开始出错,它会尝试使用以下代码回收应用程序池:

var serverManager = new ServerManager();
var pool = serverManager.ApplicationPools.Single(p => p.Name == "POOLNAME");
pool.Recycle();

但是,即使这段代码也不会阻止异常。我必须手动登录到计算机,打开IIS管理器,右键单击应用程序池,然后单击“回收”。

我在Winforms和Windows服务等应用程序中有几个其他WCF服务器/客户端没有此问题。只有在IIS上托管的客户端应用程序才有问题。

有关如何追踪导致此错误的原因的任何建议?

0 个答案:

没有答案