【发布时间】:2019-12-05 14:49:52
【问题描述】:
我正在尝试将 POST 和 GET 请求从 Angular 发送到 .Net Web api 项目 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 web 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 格式
我不知道这个问题如果有人可以帮助我,我非常感谢。我看到了很多解决方案,但没有奏效
【问题讨论】:
-
能否添加Http请求的Asp.Net控制器?
-
您可以使用 Angular 代理:angular.io/guide/build#proxying-to-a-backend-server
-
您肯定需要启用 CORS,我不确定您在 web.config 中提供的内容是否足够。这是 .NET 核心还是 .NET 框架?
-
@GermanQuinteros 我添加了 .net 控制器请求
标签: c# angular asp.net-web-api