asp.net-mvc-4 - 托管在 IIS 上另一个端口上的 Web Api 无法访问

标签 asp.net-mvc-4 asp.net-web-api

我有两个独立的项目

  1. MVC 网络应用
  2. MVC 网络 API 我已经在我的 IIS 7.5 上发布了这两个

我的 Web 应用程序托管在 7172 端口 Web API托管在7171端口

奇怪的是,我无法从我的网络应用程序 (7172) 调用 jquery.ajax() 到网络 API (7171) 端口。它给我 405 方法未找到错误代码。

但如果我在我的 web api 项目 (7171) 中编写相同的 jquery.ajax() 并调用 web api 方法,那么它可以正常工作并返回数据。

我想从我的网络应用调用网络 API。

如有任何建议,我们将不胜感激。

提前致谢。

最佳答案

这与 Same Origin Policy 有关.默认情况下,您不能对另一个域执行 AJAX 调用(包括名称、端口和协议(protocol))。

如果你想启用它你应该使用Cross-origin resource sharing (CORS) . CORS 可以通过安装(预发布)NuGet 包与 Web API 一起使用:Microsoft ASP.NET Web API Cross-Origin Support

此包允许您配置哪些域可以调用您的服务。你可以在这里找到一个步行槽Enabling Cross-Origin Requests in ASP.NET Web API .从本质上讲,它归结为向您的 Controller 添加属性,如下所示:

 [EnableCors(origins: "http://myclient.azurewebsites.net", headers: "*", methods: "*")]

关于asp.net-mvc-4 - 托管在 IIS 上另一个端口上的 Web Api 无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490830/

相关文章:

javascript - jquery如何刷新数据表列表?

asp.net-mvc - 如何在Asp.net MVC Web Api中创建Ror风格的Restful路由

c# - WebApi 500 内部服务器错误

asp.net-mvc - MVC 多表一模型

telerik - @Model 或 @Html.DisplayFor 在 mvc 4 的编辑器模板中不起作用

asp.net-mvc - ASP.Net MVC 4 - 发现多个类型与名为 'Home' 的 Controller 匹配。

c# - 将上传文件与表单数据一起发送

asp.net-web-api - 如何在内存中托管Web api?

asp.net - 我现在可以在 ASP.Net Azure 应用程序中实现类似 Elmah 的功能而不需要 Elmah 吗?

android - 从 Android 到 Web API 的 POST 数据返回 404