gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:42:45 25 4
gpt4 key购买 nike

使用的技术:

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

  • 我一直在考虑在一个解决方案中拥有一个 Web API 项目和一个单独的网站项目的想法。
  • 我的 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 项目工作,但如果我想使用 BreezeController,如果使用了微风 Web API 库,它就不起作用了。如果我想创建一个 ODataController,它也不起作用。

    所以我正在远离跨源共享的想法;尽管希望将来无论我使用 BreezeJS WebAPI helper 还是 ODataControllers,都会对 jsonp 提供足够的支持。

    现在,我不知道如何将我的 WebAPI 项目和我的 MVC 5 网站放在我可以拥有的同一个域下:
  • 本地主机/ExampleProject.API
  • 本地主机/ExampleProject.WebSite

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

    最佳答案

    嗯,答案真的很简单。

    我知道这是一个老问题,只是我忘记了如何去做,因为我已经很久没有这样做了。在 google 和 stackoverflow 上搜索答案很困难,因为讨论讨论的是设置跨源策略而不是设置同源策略。

    我花了大部分时间把所有东西都放在 IIS 上。

  • 创建了一个网站并让它指向我的网站 csproj 和 bin 文件夹所在的物理路径。我给它一个主机名“dev.example.com”并将我的主机文件更改为 127.0.0.1 以引用 dev.example.com
  • 为网站创建了一个 Web 应用程序,并将其设置为 web api 2 项目。在那之后,一切都神奇地工作了。

  • 愚蠢的部分是,我可以在 Visual Studio 中轻松完成此操作。我记得在 VS2010 中,这会导致很多问题,但是在 2013 年,我猜错误已经修复并且现在可以使用了。

    我的网站项目设置为

    localhost:2020/ExampleProject.WebSite (incorrect)



    代替

    localhost:2020 (correct)



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

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

    所以:网站将是:

    localhost:2020



    Web应用程序:

    localhost:2020/ExampleProject.API

    关于asp.net-mvc-5 - 同一域中的 Web API 2 项目和 MVC 5 网站项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370425/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com