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 будет знать, что эта страница является частью моего веб-приложения:))
Надеюсь, что это поможет тем, кто находится на общем хостинге