Web API 2和IIS 10 - 偶发的ERR_CONNECTION_RESET

时间:2016-07-28 18:29:34

标签: c# asp.net iis asp.net-web-api

我有一个外部托管网站和一个托管在我本地网络上的ASP.NET(Framework 4.5.2)Web API 2。外部网站通过单击按钮发出GET请求,API查询MSSQL数据库并返回JSON以显示页面上的数据。 Web API当前托管在运行IIS 10的Windows 10盒上。

我已经通过NuGet控制台安装了Miscrosoft.AspNet.Cors包,并通过将这段代码添加到Web.config文件中来启用CORS:

<add name="Access-Control-Allow-Origin" value="*" />

以及WebApiConfig.cs的这个片段:

config.EnableCors();    

当我在托管Web API的同一网络上时,网站运行良好。在外部网络上遇到问题。偶尔,我会收到ERR_CONN_RESET(Chrome)和“网络连接丢失”(Safari)。当我打开一个新的浏览器并导航到该站点时,错误似乎更频繁地发生。单击几下按钮后,错误停止,页面正常运行。如果我直接导​​航到web api端点,我会遇到类似的行为。 错误是零星的,这使得这个问题非常难以排除故障。 FailedRequest跟踪不会创建日志,因为请求未进入服务器。在IIS中,我尝试将应用程序池的启动模式更改为“始终运行”,并且还启用了32位应用程序而没有任何运气。 关于什么可能导致这个问题的任何想法?我可以在什么时候排除我的代码,CORS配置和IIS配置?我倾向于这是一个网络问题但我们的网络管理员确信问题在我的最后。任何帮助将不胜感激。这个问题已经耗尽了整个星期,我准备把头发拉出来了!

2 个答案:

答案 0 :(得分:2)

您绝对可以排除代码,CORS配置和IIS配置。基于错误代码,您的服务器似乎没有间歇性响应,或者可能是中间设备/代理/防火墙阻止请求并因此超时。

由于您的网络管理员因为中间设备而排除了问题,您可以在托管了webAPI的计算机上尝试一些事情(这些都不会让您满意)

1)检查http.sys日志(C:\ Windows \ System32 \ LogFiles \ HTTPERR)并根据此处的描述检查https://support.microsoft.com/en-in/kb/820729

2)尝试完全禁用防火墙。转到命令提示符(管理员模式)并运行

NetSh Advfirewall set allprofiles state off

3)如果第2步没有帮助,请转到运行 - &gt; msconfig - &gt;服务 - &gt;隐藏所有Microsoft服务 - &gt;全部禁用 - &gt;重新启动并尝试。

如果没有任何作用,请从服务器和客户端同时获取网络跟踪,您的网络管理员可以了解最新情况。

答案 1 :(得分:2)

最后,这最终成为防火墙问题。我最终更换了过时的sonicwall 2400,问题就消失了。追踪是非常困难的,因为防火墙是静默的#34;没有任何记录丢弃数据包。建议我在防火墙,数据库和应用程序服务器上运行跟踪,以确定数据包是否被丢弃。

我怀疑状态防火墙设置导致了问题,因为已知sonicwall会丢弃没有任何日志的问题数据包。

感谢您的帮助。希望有一天这篇文章可以帮助别人。