使用AspNet.FriendlyUrls和AspNet.Identity从jquery.ajx调用webmethod期间身份validation失败

如果我从安装了Nuget软件包Microsoft.AspNet.FriendlyUrls v 1.0.2和Microsoft.AspNet.Identity v.1.0.0。的jQuery.Ajax调用webmethod,那么我得到数据对象,但是没有data.d但是有属性Message ‘身份validation失败’。

我的Webmethod.aspx是:

    WebMethod    

Test Webmethod

function asyncServerCall(username) { jQuery.ajax({ url: 'WebMethod.aspx/HelloWorld', type: "POST", data: "{'username':'" + username + "'}", //async: false, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if (data.d == undefined) document.getElementById("greeitng").innerHTML = data.Message; else document.getElementById("greeitng").innerHTML = data.d; }, error: function (err) { if (err.responseText) { $('#innerError').html(err.responseText).show(); } else { alert(err); } } }); } $(document).ready(function () { $('#innerError').hide(); asyncServerCall("Superuser"); });

我在WebMethod.aspx.cs中的Webmethod是:

 [System.Web.Services.WebMethod] public static string HelloWorld(string username) { return string.Format("Hello, {0}", username); } 

在Global.asax.cs中,路由已激活

 void Application_Start(object sender, EventArgs e) { RouteConfig.RegisterRoutes(RouteTable.Routes); } 

在App_Start中已经注册了路由

 public static class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings); } } 

在App_Start文件夹中,在RouteConfig中….

注释掉以下行或更改其RedirectMode:

 //settings.AutoRedirectMode = RedirectMode.Permanent; 

它不是完全相同的用例,但值得一提的是,如果您使用的是Web服务并且“身份validation失败”消息。 请检查您的Web服务是否具有“[System.Web.Script.Services.ScriptService]”属性。 这允许从脚本调用Web服务。

例:

 [System.Web.Script.Services.ScriptService] public class WS_Default : System.Web.Services.WebService { ... }