我正在使用Web API在ASP.MVC MVC 4中创建一组新服务.到目前为止,这很棒.我已经创建了该服务并使其工作,现在我正在尝试使用JQuery来使用它.我可以使用Fiddler取回JSON字符串,它似乎没问题,但是因为该服务存在于一个单独的站点上,所以尝试使用"不允许"的JQuery错误调用它.所以,这显然是我需要使用JSONP的情况.
我知道Web API是新的,但我希望有人可以帮助我.
如何使用JSONP调用Web API方法?
我正在尝试将一些带[WebMethod]
注释的端点函数添加到Webforms样式的Web应用程序(.aspx和.asmx).
我想用这些端点注释[EnableCors]
,从而获得所有良好的ajax-preflight功能.
VS2013接受注释,但端点仍然不适合CORS.(当使用同源而非交叉原点时,它们工作正常).
我甚至不能让它们与下行和脏的交叉起源
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)
方法 - 我的浏览器拒绝响应,并且不显示跨源响应标头.
如何在这些[WebMethod]
端点中获取CORS功能?
这个主题似乎是一个拥有一百万个"解决方案"的主题,结果更加复杂.所以请稍微松一口气,因为我会试着展示发生了什么,我正在使用什么以及我是如何尝试解决这个问题的.
我的测试环境正在运行IIS6 asp.net 2.0,我已经设置好了
'Access-Control-Allow-Origin' *
Run Code Online (Sandbox Code Playgroud)
我还为.asmx扩展设置了动词
"GET,HEAD,POST,DEBUG,OPTIONS"
Run Code Online (Sandbox Code Playgroud)
通过jQuery v1.7.2 ajax()调用我能够从服务器获取xml文件,并POST到基本服务,返回一个带有预期结果跨域的字符串.所以我知道至少部分我的跨域请求正在发挥作用.
当我开始扩展它并使用json将数据发布到服务时,我的问题就出现了
我有一个简单的asmx webservice方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public SubResponse HelloWorldX(SubRequestXX SubReq)
{
SubResponse sr = new SubResponse();
sr.resultCode = "777";
sr.resultMsg = "hello - " + SubReq.EmailAddress;
return sr;
}
Run Code Online (Sandbox Code Playgroud)
非常简单,并没有太多魔法发生在那里,我想要做的就是传递'SubRequestXX'对象,现在只需验证它到达那里并做出回应.
Using jQuery:
$.ajax({
type: "POST",
url: "http://somedomain/subscription/MyService.asmx/HelloWorldX",
processData: false,
data: '{ "SubReq" : {"EmailAddress":"user@test.com"} }',
dataType: "json",
contentType: "application/json; charset=utf-8",
cache: false,
success: function(data, textStatus, jqXHR) {
ajaxSucccess3(data, textStatus, jqXHR);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("Retrieve Hello …
Run Code Online (Sandbox Code Playgroud) jquery ×2
.net ×1
c# ×1
cors ×1
cross-domain ×1
iis-6 ×1
json ×1
jsonp ×1
web-services ×1
webforms ×1