jQuery AJAX帖子收到405错误(不允许HTTP动词POST)

Jag*_*agd 11 asp.net ajax jquery rsa

我有一个ASP.NET webmethod的以下jQuery帖子:

$.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
});
Run Code Online (Sandbox Code Playgroud)

并声明了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;
}
Run Code Online (Sandbox Code Playgroud)

jQuery帖子和Web方法在Windows Authenticated环境中都很棒(即 - 用户通过LDAP进行身份验证).但是,我最近不得不将网站移动到使用RSA(双因素身份验证,引脚和令牌代码)的服务器,以便对用户进行身份验证以获取对该网站的访问权限.而我现在看到的是我所有的jQuery帖子都返回"405错误".

很明显,我想到了跨站点请求,但这些都不会发生在这里.所有jQuery AJAX帖子都使用在AjaxWebMethods.aspx中声明的Web方法,该页面驻留在站点自己的域中.

在此先感谢您的任何帮助或建议!

编辑:

在IE8中使用Fiddler为我提供了更多信息.它返回的错误代码仍然是405,但服务器错误更具描述性.服务器错误是"不允许使用用于访问路径'/AjaxWebMethods.aspx/UpdNote'的HTTP谓词POST."

我确实尝试将ajax请求的类型参数更改为GET,但我得到的是404(无法找到资源).

此外,忘了提到这是通过SSL(虽然我不认为这会有所作为).

编辑:

在经过大量测试(以及来自stackoverflow的精明成员的广泛帮助)之后,我确定405错误与网站正在使用的应用程序池直接相关,更具体地说,与为应用程序池选择的托管管道模式有关.

如果我使用面向v4.0(.NET Framework)和集成(管理管道模式)的应用程序池,那么我的AJAX帖子就可以了.但是,如果我使用针对v4.0和Classic(管理流水线模式)的应用程序池,那么我会收到405错误.

所以在这一点上我仍然在寻找这个问题的解决方案,尽管我已经能够解决这个问题了.

Jup*_*aol 3

基于此:

jQuery post 和 web 方法在 Windows 身份验证环境中都工作得很好(即 ​​- 用户通过 LDAP 进行身份验证)。但是,我最近不得不将网站移至使用 RSA(双因素身份验证、PIN 和令牌代码)对用户进行身份验证的服务器,以便获得对该网站的访问权限。我现在看到的是我的所有 jQuery 帖子都返回“405 错误”。

很明显,该错误与服务器配置有关,但要完全确定,如果可以的话,请在 RSA 服务器中创建一个新站点,并为此站点禁用 RSA 身份验证,尝试浏览您的站点以绝对确定该错误仅与 RSA 身份验证相关,丢弃新服务器中缺少的与代码相关的组件/配置

一旦您放弃了与代码相关的配置问题,我鼓励您仔细检查您的 RSA 配置(这可能很棘手)。有一次,我参与了一个使用 RSA 安全性的项目,以便跨服务器实现 SSO。(单点登录),我记得在服务器级别安装了一个 RSA ISAPI 过滤器,该过滤器负责读取/设置身份验证 cookie,以便针对 Active Directory 服务器验证每个请求。

由于每个请求都由该过滤器管理,并且该 ISAPI 过滤器位于管道的顶部,因此每个请求都必须首先由 RSA ISAPI 过滤器处理才能进行身份验证

所以我的建议是仔细检查 RSA 配置,以检测是否有东西阻止您的 AJAX 帖子

我记得 RSA 配置就像一个黑魔法盒,我们没有足够的文档,配置它是一个 PITA。我真诚地希望您的组织不会出现这种情况