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

Javascript 在同一端口上运行单独的ASP.NET项目,javascript,c#,asp.net-mvc,asp.net-web-api,Javascript,C#,Asp.net Mvc,Asp.net Web Api,我有一个ASP.NETMVC项目,它包含了web应用程序的大部分以及客户端代码使用的web API。API组件开始蔓延,我想将API和MVC应用程序分为两个项目。(MyAppMVC和MyAppAPI)。然而,当MVC应用程序不是一个项目的一部分时,我不确定如何让它与API配合得很好 现在我有了一个API控制器MyAPIController,它可以回答POST并获取从客户端JavaScript发送到/API/MyAPI的请求。当JS和API都在同一个项目下运行时,我从VisualStudio运行解

我有一个ASP.NETMVC项目,它包含了web应用程序的大部分以及客户端代码使用的web API。API组件开始蔓延,我想将API和MVC应用程序分为两个项目。(MyAppMVC和MyAppAPI)。然而,当MVC应用程序不是一个项目的一部分时,我不确定如何让它与API配合得很好

现在我有了一个API控制器
MyAPIController
,它可以回答POST并获取从客户端JavaScript发送到
/API/MyAPI
的请求。当JS和API都在同一个项目下运行时,我从VisualStudio运行解决方案,并没有问题地使用API

然而,当它们在不同的项目中运行时,这将不再合作。为了避免违反跨域安全性,JS必须在同一域/端口中访问API。然而,VisualStudio在不同的端口上运行我的API和MVC应用程序,试图从MVC文件中的Javascript文件中访问API会导致相同的源错误

有没有办法让这两个不同但互补的项目在同一个域/端口上运行?对于组织和模块化,我真的希望能够将我的web应用程序分为多个项目,而不是将它们集中到一个大型项目中。

我可以这样建议

  • 在IIS中为api创建应用程序
  • 在IIS中为MVC应用程序创建应用程序
  • 在API中启用跨域请求
    
    

  • 在这两个项目中,都使用自定义web服务器进行调试 VS 2012是:右键单击web项目->web->选择“使用自定义web服务器”,并提供项目的url,它将类似于localhost/api、localhost/mvc\U客户端
  • 从那一刻起,您的项目将

  • 在调试模式下或在不调试的情况下浏览项目时使用相同的地址
  • Api项目将允许跨域请求
  • 客户端将能够向API发送请求,因为它允许跨域请求
  • 您将能够调试项目

  • 如果要执行此操作,请验证是否可以在运行调试之前浏览项目。您可能会遇到诸如“拒绝访问路径”之类的问题。

    因此,我在不使用CORS的情况下的解决方案是放弃使用IISExpress,在本地IIS下创建两个单独的应用程序,每个应用程序都有自己的路径,但都位于端口80的默认网站下。这样我就可以到达
    http://localhost/MyAppUI
    然后从
    MyAppUI
    呼叫
    http://localhost/MyAppAPI/api
    不处理任何跨域问题。

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


    它们在同一个解决方案中吗?您可以在同一站点上使用CORS或不同的IIS应用程序。您可以使用IIS而不是IISExpress/Cassini。把它们放在同一个网站上。我在VS2017中看不到这些选项。它们在.Net Core中可用吗?