我的web api在多个IIS中运行,当移动到Azure VM时,它仅在从ajax客户端调用时提供net :: ERR_CONNECTION_RESET,但在使用POSTMAN时正常工作。
当从ajax html客户端点击时,它在OPTIONS请求中显示net :: ERR_CONNECTION_RESET。以为它没有到达服务器但是在引用时
中的http错误文件C:\ Windows \ System32下\ LogFiles文件\ HTTPERR
显示
2017-07-20 12:54:06 210.18.173.26 54141 10.0.1.4 80 HTTP / 1.1 OPTIONS / api / User / Method1 - 1 Request_Cancelled myappapipool
在web.config中
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
我已经尝试在web.config中添加超时,但它没有解决。还尝试更改Web配置&#34; Access-Control-Allow-Headers&#34;值为&#34; *&#34;,它给出了预检请求错误。
由于相同的服务器和ajax客户端通信在其他iis中工作,我怀疑在IIS中配置我的web api时,我遗漏了一些可疑的东西。从POSTMAN或Android客户端调用时,它就像使用IIS中的现有配置的魅力一样。
非常感谢任何帮助/建议。
答案 0 :(得分:3)
Request_Cancelled来自HTTPErr日志的是由DynamicIPRestrictions Module缓解DDOS攻击引起的。
如果设置动态IP限制并将“拒绝操作类型”设置为 “中止请求”,请求将被中止并记录为 HTTPErr日志中的“Request_Cancelled”
默认情况下,如果超过5个并发请求到来,动态IP地址限制可能会中止请求(请检查服务器中配置的设置是什么。)这可能是它适用于一台服务器并且在Azure环境中不起作用的原因。更多细节可以在Security guidelines to detect and prevent DOS attacks targeting IIS/Azure Web Role (PAAS)
找到答案 1 :(得分:1)
答案 2 :(得分:1)
您看到浏览器控制台出现了什么样的错误? 在浏览器中查看请求/响应标头值。有时配置未正确应用和/或浏览器需要其他标头。 有时候,Allow-Headers param限制性太强,试着用它来玩。
此外,它是否可以在所有浏览器上重现?
答案 3 :(得分:1)
这是我的网络配置配置,适用于邮递员和Chrome,您可以尝试一下:
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
<system.webServer>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
希望它有所帮助!