У меня есть следующий пост 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 Authenticated (т.е. пользователи аутентифицируются LDAP). Тем не менее, мне недавно пришлось переместить веб-сайт на сервер, который использует RSA (двухфакторная аутентификация, код PIN-кода и токена) для аутентификации пользователей, чтобы получить доступ к сайту. И теперь я вижу, что все мои сообщения jQuery возвращают "ошибку 405".
Кросс-сайтные запросы приходят на ум, очевидно, но ничто из этого не происходит здесь. Все сообщения jQuery AJAX используют веб-методы, объявленные в AjaxWebMethods.aspx, эта страница находится в собственном домене сайта.
Заранее благодарим за любую помощь или предложения!
EDIT:
Использование Fiddler в IE8 дает мне немного больше информации. Код ошибки, который он возвращает, по-прежнему равен 405, но ошибка сервера более описательна. Ошибка сервера: "HTTP-протокол POST, используемый для доступа к пути" /AjaxWebMethods.aspx/UpdNote "не разрешен."
Я попытался изменить параметр типа запроса ajax на GET, но вместо этого получаю 404 (ресурс не найден).
Кроме того, забыл упомянуть, что это связано с SSL (хотя я не ожидаю, что это изменит ситуацию).
EDIT:
После обширного тестирования (и обширной помощи проницательных членов stackoverflow) я решил, что ошибка 405 напрямую связана с пулом приложений, который используется веб-сайтом, а более конкретно - с режимом управляемого канала, который выбран для Пул приложений.
Если я использую пул приложений, который нацелен на v4.0 (.NET Framework) и Integrated (Managed Pipeline Mode), то мой пост AJAX работает отлично. Но если я использую пул приложений, который нацелен на v4.0 и классический (управляемый режим трубопровода), тогда я получаю ошибку 405.
Итак, на данный момент я все еще ищу решение этого вопроса, хотя мне удалось справиться с проблемой.