【问题标题】:Consuming ASP.Net Web API from developer client workstation从开发者客户端工作站使用 ASP.Net Web API
【发布时间】:2013-07-16 23:28:29
【问题描述】:

我开发了一个使用实体框架的 .Net Webapi,并且所有使用 uri 的功能都正常... //mywebserver/webappfolder/api/mycontroller?val=1&val=2&val=3

EF 和 API 在同一个项目中。

此时不需要自定义客户端应用程序,将这个 uri 输入我的本地 PC 浏览器,我会得到预期的 JSON 或 XML 结果。所以我假设我可以开始编写一个客户端来使用我的开发盒上的 WebAPI 并在“//mydeveloperserver/...”上运行它

$(document).ready(function () {
           $('#button').click(function () {
               alert('Hello. This works');
               $.get('http://mywebserver/webappfolder/api/mycontroller', function (data) {
                   $.each(data, function (n, val) {
                       $('#OutputDiv').add(n + ':Dedication ' + val.DedicationName);
                   });

               }); 
           });
       });

JQuery/AJAX 无法填充回调函数的结果,即使我可以看到请求已成功发出并使用 Fiddler 返回。

在深入研究文档后,我意识到客户端消费应用程序必须与 WebAPI 一样在 相同 Web 服务器“//mywebserver/...”上运行,并且一旦 JQuery/AJAX 客户端 Web 应用程序运行移动到“mywebserver”,回调函数按预期填充了 JSON 结果。 上面的代码现在可以工作了

我们在其他服务器上有网站应用程序和 .Net Windows Forms 应用程序,我想用它们来调用 WebAPI 并在不影响安全性的情况下使用这些数据。如何从开发人员盒 Web 应用程序调用在生产服务器上运行的 WebAPI。我是否需要在 WebAPI 服务器上再添加一层代码以允许我从其他地方使用该数据?

【问题讨论】:

  • 你必须在你的 webapi 代码中启用 CORS 支持

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


【解决方案1】:

根据 Ajay 的评论,您需要启用 CORS。为此,请下载以下Nuget package(注意,这是一个预发布/测试版,但它来自 Microsoft 产品团队)。

如需了解背景信息和详细了解如何使用此软件包,请参阅手册here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 2013-12-26
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多