【发布时间】: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