OWIN WebAPI 2 jQuery Ajax getting NetworkError



当我尝试使用jquery ajax调用WebAPI时,下面代码返回NetworkError的原因吗?Web方法被成功地调用,但在返回后发出错误。

如果更改对httpget的访问,我可以使用IE访问Web方法。

因此,jQuery Ajax一定有问题。希望有人会有所帮助。

$.ajax({
type: "POST",
async: false,
url: "http://localhost:5000/API/Test",
xhrFields: { withCredentials: true },
data: JSON.stringify(Params),
contentType: "application/x-www-form-urlencoded",
success: function (msg) {
},
error: function (XHR, errStatus, errorThrown) {
});
[Route("API/Test"), HttpPost]
public string Test()
{
JsonConvert.SerializeObject(new { Test = "Test Message" });
}

需要一些更改才能使此工作

1。content-type

您正在使用"应用程序/x-www-form-urlencoded" 的内容类型,但将数据发送为JSON字符串。将内容类型更改为" application/json" 。默认情况下,API将从JSON的请求主体中启用。

2。API签名中没有输入

test()不会从请求正文中读取任何内容。添加一个与客户端发送的对象匹配的参数。

3。没有返回

API方法不会返回字符串作为签名承诺。

最终结果

$.ajax({
    type: "POST",
    async: false,
    url: "http://localhost:5000/API/Test",
    xhrFields: { withCredentials: true },
    data: JSON.stringify(Params),
    contentType: "application/json",
    success: function (msg) {
        console.log(msg);
    },
    error: function (XHR, errStatus, errorThrown) {
        console.log(errStatus);
    });
[Route("API/Test"), HttpPost]
public string Test(RequestBodyDTO body)
{
    return JsonConvert.SerializeObject(new { Test = "Test Message" });
}

我找到了自己问题的答案。

即使我是从同一PC打电话(但使用jQuery ajax),我也需要添加:

[AllowAnonymous] // To the controller

appBuilder.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); // To the HttpConfiguration before any routes

相关内容

  • 没有找到相关文章

最新更新