在同一端口上运行单独的ASP.NET项目

时间:2015-01-05 16:53:35

标签: javascript c# asp.net-mvc asp.net-web-api

我有一个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应用程序分成多个项目而不是将它们集中到一个大型项目中。

3 个答案:

答案 0 :(得分:0)

我可以这样建议

  1. 在IIS中为api创建应用程序
  2. 在IIS中为MVC应用程序创建应用程序
  3. 在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. 在两个项目中都使用自定义Web服务器进行调试 VS 2012它是:右键单击Web项目 - &gt;网络 - &gt;选择“使用自定义Web服务器”并提供项目的URL,它将类似于localhost / api,localhost / mvc_client
  4. 从那一刻开始,你的项目就会有

    1. 在调试模式下或在没有调试的情况下浏览项目时的相同地址。
    2. Api项目将允许跨域请求。
    3. 客户端可以向API发送请求,因为它允许跨域请求。
    4. 您将能够调试项目。
    5. 如果您这样做,请在运行调试之前验证您是否可以浏览项目。您可能会遇到“访问拒绝路径”等问题。

答案 1 :(得分:0)

所以我的修复,没有使用CORS最终只是放弃使用IISExpress并在Local IIS下创建两个独立的应用程序,每个应用程序都有自己的路径,但都位于端口80的default web site(localhost)下这样,我就可以到达http://localhost/MyAppUI,然后从MyAppUI拨打电话到http://localhost/MyAppAPI/api,而无需处理任何跨域问题。

答案 2 :(得分:0)

转到Visual Studio中的项目属性,然后转到Web,在服务器下,将项目url更改为其他端口号,然后创建“虚拟目录”。

enter image description here