使用的技术:
我一直在努力解决在单一解决方案中使用Web API项目和单独的网站项目的想法。
现在默认情况下,web api不允许跨源策略。所以我在我的Web API 2中使用了CORS,虽然我能够使它工作,它只适用于最新的浏览器;我需要IE7到IE9的向后兼容性。
所以我玩了JSONP。我不喜欢缺乏对此的支持。我能够让它为我的Web API 2项目工作,但是如果我想使用BreezeCons,如果使用breezejs web api库则它不起作用。如果我想创建一个ODataController,它也不起作用。
所以我正在摆脱交叉原点共享的想法;虽然希望将来能够有足够的jsonp支持,无论我是否使用BreezeJS WebAPI助手或ODataControllers。
目前,我不知道如何将我的WebAPI项目和我的MVC 5网站放在同一个域中:
我是否必须在主机文件中进行一些配置?如果我想从VS2013运行我的项目,它是否能够在同一个域下运行两个项目..或者我是否必须继续手动更改浏览器中的URL?
答案 0 :(得分:6)
嗯,答案非常简单。
我知道这是一个老问题,只是我忘了怎么做,因为我做了这么久已经很久了。在谷歌和stackoverflow上搜索答案很困难,因为讨论讨论了设置交叉原始政策而不是设置相同的原始政策。
我花了很多时间把所有东西放在IIS上。
创建了一个网站,并指向我的网站csproj和bin文件夹所在的物理路径。我给它一个主机名“dev.example.com”并将我的主机文件更改为127.0.0.1以引用dev.example.com
为网站创建了一个Web应用程序,并为web api 2项目进行了设置。在此之后,一切都神奇地起作用。
愚蠢的部分是,我可以在视觉工作室轻松完成。我记得在VS2010中,这会导致许多问题,但在2013年,我猜错误已得到修复,现在可以正常工作。
我将我的WebSite项目设置为
localhost:2020 / ExampleProject.WebSite(不正确)
而不是
localhost:2020(正确)
并创建了一个虚拟目录。我通过右键单击项目,转到属性,在“Web”选项卡下执行此操作。
所以基本上,经验法则是让我的网站成为我的主要根域,并将该完整域复制到我想在其下添加的任何Web应用程序。
所以:网站将是:
本地主机:2020
网络应用程序:
本地主机:2020 / ExampleProject.API