我有以下jQuery发布到ASP.NET webmethod:
$.ajax({
type: "POST",url: "AjaxWebMethods.aspx/UpdNote",contentType: "application/json; charset=utf-8",data: "{'ID' : '" + id + "','note' : '" + note + "' }",dataType: "json",success: UpdNote_Success,error: AjaxError
});
Web方法被声明:
[System.Web.Services.WebMethod(enableSession: true)]
public static int UpdNote(int ID,string note) {
// business logic that eventually returns a number,but simplifying
// ... for the sake of brevity
int retNum = 99;
return retNum;
}
jQuery文章和Web方法在Windows Authenticated环境中都很好用(即 – 用户通过LDAP进行身份验证).然而,我最近不得不将该网站移动到使用RSA(双因素身份验证,引脚和令牌代码)的服务器,以验证用户以访问该网站.我现在看到的是,我所有的jQuery帖子都返回“405错误”.
显然,跨站点的请求,但是这里没有一个.所有jQuery AJAX帖子都使用在AjaxWebMethods.aspx中声明的Web方法,该页面驻留在站点自己的域中.
提前感谢任何帮助或建议!
编辑:
在IE8中使用Fiddler给我一些更多的信息.它返回的错误代码仍然是405,但服务器错误更具描述性.服务器错误是“不允许用于访问路径的HTTP动词POST”/AjaxWebMethods.aspx/UpdNote“.
我确实尝试将ajax请求的type参数更改为GET,但是我得到一个404(不能找到该资源).
另外,忘了提到这是通过SSL(虽然我不期望这会有所作为).
编辑:
经过广泛的测试(并从Stackoverflow的精明成员的广泛的帮助),我已经确定405错误与网站正在使用的应用程序池直接相关,更具体地说,涉及到为应用程序池选择的管理流水线模式.
如果我使用一个针对v4.0(.NET Framework)和集成(管理管道模式)的应用程序池,那么我的AJAX帖子工作正常.但是,如果我使用的目标是v4.0和经典(管理管道模式)的应用程序池,那么我得到405错误.
所以在这一点上,我仍然在寻找一个解决这个问题的解决方案,尽管我已经能够回到这个问题.