Сообщение jQuery AJAX получает ошибку 405 (HTTP-глагол POST не разрешен)

У меня есть следующий пост jQuery для веб-метода ASP.NET:

$.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
});

И объявлен веб-метод:

[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 и веб-метод прекрасно работают в среде с проверкой подлинности Windows (, т.е. -пользователи аутентифицируются с помощью LDAP ). Однако недавно мне пришлось перенести веб-сайт на сервер, который использует RSA (двухфакторную аутентификацию -, пин-код и токен )для аутентификации пользователей, чтобы получить доступ к сайту. И сейчас я вижу, что все мои сообщения jQuery возвращают «ошибка 405».

Очевидно, что на ум приходят кросс-сайтовые -запросы, но здесь ничего подобного не происходит. Все сообщения jQuery AJAX используют веб-методы, объявленные в AjaxWebMethods.aspx, страница которого находится в собственном домене сайта.

Заранее спасибо за любую помощь или предложения!

РЕДАКТИРОВАТЬ:

Использование Fiddler в IE8 дает мне немного больше информации. Код ошибки, который он возвращает, по-прежнему 405, но ошибка сервера более наглядна. Ошибка сервера: «Глагол HTTP POST, используемый для доступа к пути «/AjaxWebMethods.aspx/UpdNote», не разрешен».

Я попытался изменить параметр типа запроса ajax на GET, но вместо этого получаю 404 (Ресурс не найден ).

Кроме того, забыл упомянуть, что это через SSL (, хотя я не ожидаю, что это будет иметь значение ).

РЕДАКТИРОВАТЬ:

После обширного тестирования (и обширной помощи от проницательных участников stackoverflow )я определил, что ошибка 405 напрямую связана с пулом приложений, который использует веб-сайт,и, более конкретно, к режиму управляемого конвейера, выбранному для пула приложений.

Если я использую пул приложений, ориентированный на v4.0 (.NET Framework )и интегрированный (режим управляемого конвейера ), то мой пост AJAX работает нормально. Но если я использую пул приложений, предназначенный для версии 4.0 и классического (режима управляемого конвейера ), я получаю ошибку 405.

Так что на данный момент я все еще ищу решение этого вопроса, хотя мне удалось -разобраться в проблеме.

11
задан Jagd 3 July 2012 в 17:19
поделиться