繁体   English   中英

我的web api只从ajax客户端发出net :: ERR_CONNECTION_RESET错误

[英]My web api gives net:: ERR_CONNECTION_RESET error only from ajax client

我的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配置“Access-Control-Allow-Headers”值更改为“*”,它给出了预检请求错误。

由于相同的服务器和ajax客户端通信在其他iis中工作,我怀疑在IIS中配置我的web api时,我遗漏了一些可疑的东西,它位于Azure VM中。 从POSTMAN或Android客户端调用时,它就像一个带有IIS中现有配置的魅力。

任何帮助/建议都非常感谢。

Request_Cancelled来自HTTPErr日志的是由DynamicIPRestrictions模块缓解DDOS攻击引起的。

如果您将“拒绝操作类型”设置为“中止请求”设置动态IP限制,请求将被中止并在HTTPErr日志中记录为“Request_Cancelled”

默认情况下,如果超过5个并发请求到来,动态IP地址限制可能会中止请求(检查服务器中配置的设置是什么。)这可能是它适用于一个服务器并且在Azure环境中不起作用的原因。更多详细信息可以在安全准则中找到, 以检测和防止针对IIS / Azure Web角色(PAAS)的DOS攻击

由于几个原因,您将得到此问题。 但在这种情况下,我假设您已经安装了WebDAV,有时它会与其他模块发生冲突。 因此,您最好先尝试删除该扩展名。

在此输入图像描述

你看到浏览器控制台出现什么样的错误? 在浏览器中查看请求/响应标头值。 有时配置未正确应用和/或浏览器需要其他标头。 有时,Allow-Headers param限制性太强,尝试使用它。

此外,它是否可以在所有浏览器上重现?

这是我的网络配置配置,适用于邮递员和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>

希望能帮助到你 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM