Microsoft Edge问题-请求的资源需要用户身份验证

sle*_*423 5 angularjs asp.net-web-api2 iis-8.5 microsoft-edge

我托管了一个网站和api IIS 8.5,最近使用该网站的用户在尝试将POST数据发送到api时,收到以下控制台错误Microsoft Edge

HTTP401:拒绝-请求的资源需要用户认证。(XHR)选项-http:// my-local-address / api / customers / approval / post

注意:使用Windows身份验证对用户进行身份验证。

这是自发发生的,为了解决此问题,用户被迫在MS Edge上进行硬刷新(Ctrl+ F5),然后他们可以继续其过程。可以设置IIS一段时间后释放用户身份验证吗?

我在下面列出了解决问题的尝试:

  • 我让我的组织为我的本地网址添加了受信任的策略。
  • 更改了API的提供程序。将NTLM移至谈判上方。
  • 在IIS 7.5中Windows身份验证失败后,基于此stackoverflow 删除了协商
  • 尝试从POST请求中捕获错误,但每次都返回null
  • 配置CORS为允许交叉原点。

注意:我正在使用angularjs前端和ASP.NET Web API 2API。

以下代码片段详细介绍了如何配置Web Api:

WebApiConfig.cs

var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
config.EnableCors(cors);
Run Code Online (Sandbox Code Playgroud)

Web.config

  <system.web>
    <identity impersonate="true" />
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5.2" />
  </system.web>
  <system.webServer>
     <validation validateIntegratedModeConfiguration="false" />
     <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="TRACEVerbHandler" />
        <remove name="OPTIONSVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
     </handlers>
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

Angular模块配置用于$httpProvider$http请求提供凭据

$httpProvider.defaults.withCredentials = true;
Run Code Online (Sandbox Code Playgroud)