0

我开发了一个使用实体框架的.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 服务器上再添加一层代码以允许我从其他地方使用该数据?

4

1 回答 1

0

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

有关背景信息并阅读有关如何使用此软件包的更多信息,请参阅此处的手册。

于 2013-07-17T08:36:29.760 回答