У меня есть следующий пост 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.
Так что на данный момент я все еще ищу решение этого вопроса, хотя мне удалось -разобраться в проблеме.