Asp.net 具有 Angular 2 配置的 MVC5
Asp.net MVC5 with Angular 2 configuration
我是 Angular 2 的初学者。我正在使用 Angular CLI 创建 Angular 项目。我正在单独创建 asp.net MVC Web api 项目。
- 使用 angular CLI 到
ng serve
命令启动此服务:localhost:4200
- MVC 网络 api 启动此服务:
localhost:65320
当我使用 Angular http get 请求从 localhost:65320/api/myservice
下载数据时,发生了跨源问题。因为 angular 项目使用不同的 url。但我将 header 添加到 Access-Control-Allow-Origin=*
问题已解决。
但是当我使用 http post 请求时总是 return 405 method not allowed
出现问题
问题:
- 如何在 Web api 控制器中允许跨源 post 请求?
- 或者如何配置 Angular CLI 创建的项目与 MVC 项目一起工作?
正确答案:
Web api 跨源问题解决了这篇文章:
https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors @chandermani 建议
您可以通过两种不同的方式在 Web API 中启用 CORS:
- 使用 Microsoft.AspNet.WebApi.Cors:按照 https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api as Chandermani 指出的教程进行操作。
将以下内容添加到 web.config 中的 system.webServer 元素:
<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>
我是 Angular 2 的初学者。我正在使用 Angular CLI 创建 Angular 项目。我正在单独创建 asp.net MVC Web api 项目。
- 使用 angular CLI 到
ng serve
命令启动此服务:localhost:4200
- MVC 网络 api 启动此服务:
localhost:65320
当我使用 Angular http get 请求从 localhost:65320/api/myservice
下载数据时,发生了跨源问题。因为 angular 项目使用不同的 url。但我将 header 添加到 Access-Control-Allow-Origin=*
问题已解决。
但是当我使用 http post 请求时总是 return 405 method not allowed
出现问题
问题:
- 如何在 Web api 控制器中允许跨源 post 请求?
- 或者如何配置 Angular CLI 创建的项目与 MVC 项目一起工作?
正确答案:
Web api 跨源问题解决了这篇文章: https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors @chandermani 建议
您可以通过两种不同的方式在 Web API 中启用 CORS:
- 使用 Microsoft.AspNet.WebApi.Cors:按照 https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api as Chandermani 指出的教程进行操作。
将以下内容添加到 web.config 中的 system.webServer 元素:
<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>