1

我有一个托管在 IIS 8.5 上的 ASP.NET MVC 应用程序。该站点将在数小时到数天之间正常运行,但在尝试连接到另一台计算机上通过 net.tcp 托管的 WCF 服务时最终开始出现 EndpointNotFoundException。

如果我尝试使用不同的应用程序池、控制台应用程序等从 IIS 机器连接到 WCF 服务,它们都会毫无错误地连接。也不是每一次连接尝试都失败了,只是大多数连接尝试都失败了。

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

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

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

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 上的客户端应用程序出现问题。

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

4

0 回答 0