JQuery POST, Ошибка 405 Метод не разрешен

Я пытаюсь разместить веб-приложение ASP.NET MVC4 с помощью IIS 7.5. При отладке приложения все работает нормально (я предполагаю, что это происходит из-за проверки подлинности Windows). Однако, когда я публикую приложение и просматриваю его, я получаю ошибку 405, не допускающую ошибки:

POST http://localhost/ 405 (Method Not Allowed)
send 
i.extend.ajax 
i.(anonymous function)
(anonymous function)

Из того, что я читал, это либо проблема с сопоставлениями обработчиков в IIS, либо какая-то конфигурация необходима в web.config. В любом случае, я не нашел правильного решения. Может ли кто-нибудь сказать мне, что мой web.config должен включать во все POSTS? И/или как настроить правильное отображение Handler в IIS, так как я новичок в веб-разработке и считаю, что количество опций немного подавляющее.

Кусок javascript, который вызывает ошибку, выглядит следующим образом:

$.post("/", { latitude: locLat, longitude: locLon, username: $('#onlineUsers').attr('itemid') });

Ответ 1

A 405 вызывается IIS, когда запрашивается HTTP-глагол (GET, PUT, POST, DELETE, HEAD и т.д.) и не поддерживается/запрещен назначенным обработчиком.

Вам нужно будет открыть диспетчер IIS → Веб-сайт по умолчанию → Отображения обработчиков (или сопоставления обработчиков, характерные для вашего веб-приложения)

enter image description here

Здесь вам нужно будет сыграть с сопоставлениями обработчиков, поскольку один из них не позволяет использовать "POST" глаголы.

Поскольку вы не отправляете на какую-либо конкретную страницу (.aspx,.ashx и т.д.), будет сложно определить точный обработчик, который вызывает проблемы.

Обработчики, представляющие интерес, могут быть:

  • ExtensionlessUrlHandler-ISAPI-4.0_32bit/64bit
  • StaticFile

Как только вы идентифицируете обработчик, к которому направляется ваш запрос, дважды щелкните его, чтобы открыть диалог.

enter image description here

Оттуда нажмите "Запросить ограничения", затем "Глаголы"

Убедитесь, что в текстовой области присутствует соответствующий глагол.

enter image description here

Как я уже упоминал ранее, я не уверен, что обработчик обрабатывает ваш запрос, когда вы не отправляете его на какую-либо конкретную страницу (у вас может быть перезапись URL-адреса на месте, которая правильно направляет ваш запрос).


Если вышеописанное не удается, вам может потребоваться проверить, установлено ли WebDAV Publishing и удалить его (требуется перезагрузка).

WebDAV

Ответ 2

Возможно, вам следует изменить свой формат post'URl следующим образом:

$.post('@Url.Content("~/Attach/UpdateAttach")'

Ответ 3

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

это мой случай, и вот что я нашел.

У меня есть мое веб-приложение в корневом каталоге, созданном с помощью панели управления Godaddy.. и запрос POST подтвержден.

то я использовал FileZilla для создания тестовой папки для моего jquery.. (заметил, что я использовал FileZilla, поэтому веб-приложение и, следовательно, IIS GoDaddy не знают, что я хочу, чтобы эта папка была частью моего приложения)

тогда всякий раз, когда я тестирую этот jQuery в этой тестовой папке.. Я получаю эту ошибку [405 Метод не разрешен]..

решение было чрезвычайно простым:

Я переместил страницу тестирования из этой тестовой папки, созданной FileZilla, и разместил ее внутри папки, созданной с помощью панели управления Godaddy (в этом случае IIS будет знать, что эта страница является частью моего веб-приложения:))

Надеюсь, что это поможет тем, кто находится на общем хостинге