Asp.net mvc 5 同一领域中的Web API 2项目和MVC 5网站项目

Asp.net mvc 5 同一领域中的Web API 2项目和MVC 5网站项目,asp.net-mvc-5,same-origin-policy,asp.net-web-api2,Asp.net Mvc 5,Same Origin Policy,Asp.net Web Api2,使用的技术: 布雷泽斯 奥达塔 网络API 2 MVC5 IDE:Visual Studio 2013 我一直在绞尽脑汁想在一个解决方案中有一个Web API项目和一个单独的Web站点项目 我的Web API 2项目将打开为:localhost:2020/ExampleProject.API 我的MVC5网站项目打开为:localhost:5050/ExampleProject.WebSite 现在默认情况下,web api不允许跨源策略。因此,我在我的WebAPI2中启用了CORS,虽

使用的技术:

  • 布雷泽斯
  • 奥达塔
  • 网络API 2
  • MVC5
  • IDE:Visual Studio 2013
我一直在绞尽脑汁想在一个解决方案中有一个Web API项目和一个单独的Web站点项目

  • 我的Web API 2项目将打开为:localhost:2020/ExampleProject.API
  • 我的MVC5网站项目打开为:localhost:5050/ExampleProject.WebSite
现在默认情况下,web api不允许跨源策略。因此,我在我的WebAPI2中启用了CORS,虽然我能够让它工作,但它只适用于最新的浏览器;我需要IE7到IE9的向后兼容性

所以我和JSONP玩了。我不喜欢这方面缺乏支持。我能够让它为我的WebAPI2项目工作,但是如果我想使用BreezeController,如果使用BreezeJSWebAPI库,它就不能工作。如果我想创建一个ODataController,它也不起作用

因此,我正在远离跨来源共享的想法;尽管希望将来无论我使用BreezeJS WebAPI助手还是ODataController,都能有足够的jsonp支持

目前,我不知道如何将我的WebAPI项目和我的MVC 5网站放在同一个域中,我可以:

  • localhost/ExampleProject.API
  • localhost/ExampleProject.WebSite

我必须在主机文件中进行一些配置吗?如果我想从VS2013运行我的项目,它是否能够在同一个域下运行这两个项目。。或者我必须继续在浏览器中手动更改URL吗?

答案非常简单

我知道这是一个老问题,只是我忘记了怎么做,因为我已经很久没有这样做了。在google和stackoverflow上搜索答案很困难,因为讨论讨论的是建立跨来源政策,而不是建立同一来源政策

我把大部分时间都花在了IIS上

  • 创建了一个网站,并让它指向我的网站csproj和bin文件夹所在的物理路径。我给它一个主机名“dev.example.com”,并将我的主机文件改为127.0.0.1,以引用dev.example.com

  • 为该网站创建了一个Web应用程序,并将其设置为Web api 2项目。从那以后一切都神奇地工作了

  • 最愚蠢的是,我本可以在VisualStudio中轻松完成这项工作。我记得在VS2010中,这会导致很多问题,但在2013年,我想bug已经修复,现在可以正常工作了

    我把我的网站项目设置为

    localhost:2020/ExampleProject.WebSite(不正确)

    而不是

    本地主机:2020(正确)

    并创建了一个虚拟目录。我通过右键单击项目,转到“Web”选项卡下的“属性”来实现这一点

    所以基本上,经验法则是让我的网站成为我的主根域,并将完整的域复制到我想添加到它下面的任何web应用程序

    因此:网站将是:

    本地主机:2020

    web应用程序:

    localhost:2020/ExampleProject.API