c#-Visual Studio中带有ASP.NET Web API项目的Angular项目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-Visual Studio中带有ASP.NET Web API项目的Angular项目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2051字,纯文字阅读大概需要3分钟。
内容图文
我在Visual Studio 2017中有两个项目的解决方案.
其中一个包含客户端SPA的所有Angular文件.另一个是ASP.NET Web API项目,该项目用作Angular前端进行的HTTP调用的端点.
我正在使用Angular CLI和ng-serve将我的角度应用程序部署到localhost:4200
Web API已部署到localhost:6463
在生产环境中,它们将属于同一域.但是,在开发中,它们不在同一域中,因为本地主机的端口不同.由于Angular应用程序不得不与Web api通信,因此迫使我实现CORS.
对我来说,仅出于开发目的而实施CORS似乎不太理想.
有没有更好的结构?还是我缺少什么?
解决方法:
简单答案
否.有关更新的答案,请参见下面的代理部分.
您将需要启用CORS.根据Official Microsoft Documentation for ASP.NET Core,在关于跨域请求(CORS)的部分下,它们提供了“相同来源”的定义:
什么是“原产地”?
如果两个URL具有相同的方案,主机和端口,则它们具有相同的来源. (RFC 6454)
这两个URL具有相同的来源:
> http://example.com/foo.html
> http://example.com/bar.html
这些URL与前两个URL的来源不同:
> http://example.net-其他域
> http://www.example.com/foo.html-不同的子域
> https://example.com/foo.html-不同的方案
> http://example.com:9000/foo.html-不同的端口
Note:
Internet Explorer does not consider the port when comparing origins.
如何启用CORS
为您的案例启用CORS的快速方法:
启动文件
app.UseCors(builder => builder.WithOrigins("localhost"));
Update:
According to 07001, it might be possible to do it without CORS.
API的代理
您需要在Frontend目录中创建一个名为proxy.conf.json的文件:
{
"/api": {
"target": "http://localhost:65498",
"secure": false
}
}
目标值包含端口号.如果您使用的是Visual Studio,则可以从后端项目属性中读取它.
这会将所有API请求传递给正在运行的ASP.NET Core应用程序.
我们在这里要做的最后一件事是修改npm start脚本,因此它使用代理配置.在Frontend项目中打开package.json,找到scripts部分,然后将start命令修改为:
"start": "ng serve --proxy-config proxy.conf.json"
要使用该应用程序,您需要同时启动ng dev服务器和ASP.NET应用程序.第一个是从前端目录执行的命令npm start来启动的.后端应用程序可以从Visual Studio启动,也可以在运行dotnet watch的命令行中启动.如果使用命令行版本,请注意其使用的端口,并在代理配置文件中正确设置它. dotnet中的watch命令监视应用程序中的更改,并在您进行任何更改时重新构建它.
内容总结
以上是互联网集市为您收集整理的c#-Visual Studio中带有ASP.NET Web API项目的Angular项目全部内容,希望文章能够帮你解决c#-Visual Studio中带有ASP.NET Web API项目的Angular项目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。