我在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上托管的客户端应用程序才有问题。
有关如何追踪导致此错误的原因的任何建议?