Web API 2和IIS 10-零星错误_连接_设置

本文关键字:错误 连接 设置 API IIS Web | 更新日期: 2023-09-27 17:59:10

我有一个外部托管网站和一个托管在本地网络上的ASP.NET(Framework 4.5.2)Web API 2。外部网站通过点击API按钮发出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();    

当我在API网站所在的同一个网络上时,该网站运行得很完美。当我在外部网络上时会遇到问题。偶尔,我会收到ERR_CONN_RESET(Chrome)和"网络连接丢失"(Safari)。当我打开一个新的浏览器并导航到该网站时,错误似乎更频繁地发生。单击几个按钮后,错误停止,页面功能正常。如果我直接导航到web api端点,我会经历类似的行为。这些错误是偶发的,这使得该问题极难进行故障排除。FailedRequest跟踪不会创建日志,因为请求没有到达服务器。在IIS中,我尝试将应用程序池的启动模式更改为"始终运行",并启用了32位应用程序,但没有成功。有什么想法可以引起这个问题吗?在什么时候我可以排除我的代码、CORS配置和IIS配置?我倾向于这是一个网络问题,但我们的网络管理员确信问题出在我这边。如有任何帮助,我们将不胜感激。这个问题已经吞噬了我整整一周的时间,我快要把头发拔出来了!

Web API 2和IIS 10-零星错误_连接_设置

您可以明确排除您的代码、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没有帮助,请运行->msconfig->服务->隐藏所有Microsoft服务->全部禁用->重新启动并尝试。

如果什么都不起作用,从服务器和客户端同时进行网络跟踪,您的网络管理员可以了解发生了什么。

最终,这是一个防火墙问题。我最终更换了过时的sonicwall2400,问题就消失了。很难追踪,因为防火墙在没有任何日志记录的情况下"无声"地丢弃数据包。按照建议,我在防火墙、数据库和应用程序服务器上运行了一个跟踪,以确定数据包被丢弃。

我怀疑这个问题是由有状态防火墙设置引起的,因为众所周知,sonicwall会在没有任何日志的情况下丢弃问题数据包。

谢谢你的帮助。希望这篇文章有一天能帮助到其他人。