405(不允许使用方法)用于角度的POST方法

时间:2019-12-05 14:49:52

标签: c# angular asp.net-web-api

我正在尝试从角度向.Net Web api项目发送POSTGET请求,但GET请求工作正常,但对于POST请求却不起作用给我以下错误,

  

选项http://localhost:2073/api/MyAttendance/GetEvent 405(方法   不允许)访问XMLHttpRequest   原产地的“ http://localhost:2073/api/MyAttendance/GetEvent”   “ http://localhost:4200”已被CORS政策屏蔽:对   飞行前请求未通过访问控制检查:它没有   HTTP正常状态。

同胞是我的POST请求,

component.ts

 getDate() {
    let dateList: any = {};
    dateList.startDate = this.startDate;
    dateList.endDate = this.endDate;

    this._lkassetsService.getEventDetails(JSON.stringify(dateList)).subscribe((eventData: any) => {
        this.msg = eventData;    
     });
}

service.ts

getEventDetails(dateList: any): Observable<any> {
   return this._http.post('http://localhost:2073/api/MyAttendance/GetEvent', dateList, {
     headers:new HttpHeaders({ 
       'Content-Type': 'application/json'
     })
   });        
  }

以下是我从后端提交的.net Web API请求

[HttpPost]
[Route("api/MyAttendance/GetEvent")]
public string Event([FromBody]object Text)
{

    return "Success";
}

此请求与邮递员配合良好,并且在我的web.cong文件(.net网络api)中,我添加了以下代码,

   <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>   

如果我使用'Content-Type': 'application/x-www-form-urlencoded'而不是'Content-Type': 'application/json'也可以,但是输出为空,但我想使用json格式

对于这个问题我一无所知,如果有人可以帮助我,我将非常感激。我看到了很多解决方案,但这没用

2 个答案:

答案 0 :(得分:1)

请勿将操作名称GetEvent用于get以外的其他方法。如果您使用get in action名称,它将成为get方法

答案 1 :(得分:1)

我在项目中遇到了这个问题。我成功的方法是在API方面进行这些更改。 (我们的.net框架版本为4.6.1)

在web.config中

  <appSettings>
    <add key="Cors-Origins" value="http://localhost:4200" />
  </appSettings>

在WebApiConfig.cs中:

string origins = ConfigurationManager.AppSettings["Cors-Origins"];
config.EnableCors(new EnableCorsAttribute(origins, "*", "*") {SupportsCredentials = true});