ASP.net WebApi POST返回405错误

时间:2018-01-20 20:32:45

标签: asp.net angular5 web.api

我正在使用asp.net后端构建Angular 5应用程序。我想发送POST请求,我通过Postman测试它并且它工作得非常好,但是,当我尝试在Angular内部进行时我得到405错误。 我使用带有标题的HttpClient:新的HttpHeaders({' Content-Type':' application / json'}),与Postman相同。

我尝试更改web.config

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept"/> 
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
      </customHeaders>
    </httpProtocol>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <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>
  </system.webServer>

但它似乎不起作用。

Angular POST代码(带标题:新的HttpHeaders({&#39; Content-Type&#39;:&#39; application / json&#39;})

   setDopuskItem(itemToSave: DopuskItem){
     let endpoint = this._dopuskApiUrl + 'set';
     let body = JSON.stringify(itemToSave);

     return this.http.put(
      endpoint,
      body,
      httpOptions)
      .catch(this.handleError);

}

1 个答案:

答案 0 :(得分:1)

这是因为浏览器在发送主要请求之前发送了预检请求。

您可以在webapi应用中添加以下代码:global.asax.cs

GLIBCXX_3.4.21