加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-5 – 同一域中的Web API 2项目和MVC 5网站项目

发布时间:2020-12-16 07:06:06 所属栏目:asp.Net 来源:网络整理
导读:使用的技术: BreezeJS OData Web API 2 MVC 5 IDE:Visual Studio 2013 我一直在努力解决在单一解决方案中使用Web API项目和单独的Web站点项目的想法. 我的Web API 2项目打开为:localhost:2020 / ExampleProject.API 我的MVC 5 WebSite项目打开为:localh
使用的技术:

> BreezeJS
> OData
> Web API 2
> MVC 5
> IDE:Visual Studio 2013

我一直在努力解决在单一解决方案中使用Web API项目和单独的Web站点项目的想法.

>我的Web API 2项目打开为:localhost:2020 / ExampleProject.API
>我的MVC 5 WebSite项目打开为:localhost:5050 / ExampleProject.WebSite

现在默认情况下,web api不允许跨源策略.所以我在我的Web API 2中使用了CORS,虽然我能够使它工作,它只适用于最新的浏览器;我需要IE7到IE9的向后兼容性.

所以我玩了JSONP.我不喜欢缺乏对此的支持.我能够让它为我的Web API 2项目工作,但是如果我想使用BreezeCons,如果使用breezejs web api库则它不起作用.如果我想创建一个ODataController,它也不起作用.

所以我正在摆脱交叉原点共享的想法;虽然希望将来有足够的支持jsonp,无论我使用BreezeJS WebAPI助手还是ODataControllers.

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

> localhost / ExampleProject.API
> localhost / ExampleProject.WebSite

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

解决方法

嗯,答案真的很简单.

我知道这是一个老问题,只是我忘了怎么做,因为我做了这么久已经很久了.在谷歌和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 (incorrect)

代替

localhost:2020 (correct)

并创建了一个虚拟目录.我通过右键单击项目,转到属性,在“Web”选项卡下执行此操作.

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

所以:网站将是:

localhost:2020

Web应用程序:

localhost:2020/ExampleProject.API

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读