从开发人员客户端工作站使用ASP.Net Web API

时间:2013-07-16 23:28:29

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

我开发了一个使用实体框架的.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成功生成并返回请求。

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

我们在其他服务器上使用网站应用程序和.Net Windows窗体应用程序,我想用它来调用WebAPI并使用该数据而不会影响安全性。如何从我的开发人员框Web应用程序调用在生产服务器上运行的WebAPI。我是否需要在WebAPI服务器上安装另一层代码以允许我从其他地方使用该数据?

1 个答案:

答案 0 :(得分:0)

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

有关背景信息以及有关如何使用此软件包的详细信息,请参阅手册here