我有一个ASP.NET MVC项目,它包含大量的Web应用程序以及客户端代码使用的Web API。 API组件开始蔓延,我想将API和MVC应用程序分成两个项目。 (MyAppMVC和MyAppAPI)。但是我不确定当它们不是一个项目的一部分时,如何让MVC应用程序与API很好地配合。
现在我有一个API控制器MyAPIController
,它可以解决从客户端JavaScript发送到/api/MyAPI
的POST和GET请求。当JS和API同时存在于同一个项目中时,我从Visual Studio运行解决方案并点击API而没有任何问题。
然而,当他们在不同的项目中运行时,这不再合作。为避免违反跨域安全性,JS必须在同一域/端口内访问API。但是,Visual Studio在不同的端口上运行我的API和MVC应用程序,并且尝试从MVC文件中的Javascript文件中访问API会导致同源错误。
有没有办法在同一个域/端口上运行这两个不同但互补的项目?对于组织和模块化,我真的希望能够将我的Web应用程序分成多个项目而不是将它们集中到一个大型项目中。
答案 0 :(得分:0)
我可以这样建议
在API中启用跨域请求
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="access-control-allow-headers" value="content-type" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<system.webServer>
从那一刻开始,你的项目就会有
如果您这样做,请在运行调试之前验证您是否可以浏览项目。您可能会遇到“访问拒绝路径”等问题。
答案 1 :(得分:0)
所以我的修复,没有使用CORS最终只是放弃使用IISExpress并在Local IIS下创建两个独立的应用程序,每个应用程序都有自己的路径,但都位于端口80的default web site
(localhost)下这样,我就可以到达http://localhost/MyAppUI
,然后从MyAppUI
拨打电话到http://localhost/MyAppAPI/api
,而无需处理任何跨域问题。
答案 2 :(得分:0)