Проблема
По этому поводу было довольно много других вопросов (в частности, ошибка 405 Method Not Allowed), но я еще не нашел решения, которое, похоже, работает.
У меня есть веб-приложение только в html и javascript (без бэкэнда), а javascript использует POST в формах. Я понимаю, что IIS видит html-файлы как статические и разрешает им использовать только команды GET и HEAD, поэтому при публикации формы я получаю сообщение «405 Method Not Allowed ... не может быть отображено, потому что недопустимый метод (HTTP-команда) быть использованным".
Конфигурация
У меня установлен IIS 7 по умолчанию на машине Win 7. По умолчанию ISAPI / CGI / ASP и т. Д. И WebDav отключены / не установлены. Единственный параметр, который я изменил, - это добавление чтения / записи для некоторых функций в разделе «Делегирование функций».
В разделе «Сопоставления обработчиков» на сайте по умолчанию есть OPTIONSVerbHandler, TRACEVerbHandler и StaticFile. Ограничения запроса StaticFile показывают, что все глаголы включены, имеют доступ к чтению, вызывают обработчик, только если запрос сопоставлен с файлом или папкой.
Свойства System.Web.DefaultHttpHandler отображают глаголы GET, HEAD и POST.
Пробовал до сих пор
Если я настроил другое сопоставление обработчиков, дублируя ОПЦИИ, но вместо этого установив для него значение POST, ошибка 405 исчезнет, но вместо этого я получу пустую страницу.
Как предлагается в нижней части этот вопрос, я попытался добавить это в свой web.config, но, похоже, это не помогло:
<add name="HttpPost"/>
(Я также сделал то же самое с графическим интерфейсом конфигурации, а также добавил HttpPostLocalhost.)
Я пробовал изменить сообщение на POST в html (на всякий случай), но это не повлияло.
Я также пробовал явно разрешить глаголы в разделе «Фильтрация запросов», но это тоже не помогло.
У кого-нибудь есть другие идеи? Я предполагаю, что это сработает, если я установлю asp и изменю все расширения файлов, но это кажется ненужным.
Таким образом, похоже, что публикация в html-файлах невозможна в IIS без установки внутреннего языка для интерпретации html-файлов, а не обработчика статических файлов IIS. Если кто знает другое, дайте мне знать! (Чтобы было ясно, у Apache нет этой проблемы.)
Сообщение, на которое ссылается @ JudasIscariot1651, работает, однако оно требует установки ASP и приведет к поломке вашего сайта, если вы используете серверный язык, не являющийся ASP (предположительно, только при публикации на html-страницах - я не смог проверить) . Вам необходимо настроить любой язык, который вы используете для обработки html-файлов вместо статического обработчика файлов.
Если вы не используете серверный язык или используете ASP, вот копия версии ASP (права доступа изменены на пример в сообщении) - сначала установите ASP и ISAPI:
<add name="html" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" />
Если вы используете PHP, вам необходимо использовать следующее (отрегулируйте настройки PHP) - предположительно, у вас уже установлены PHP и CGI:
<add name="html" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\php-cgi.exe" resourceType="Unspecified" requireAccess="None" />
Добавьте модули ISAPI и обработчик обработки сценария для файлов «* .html», сопоставив их, например, с обработчик asp по умолчанию, в вашем файле web.config.
См. Это сообщение в блоге: http://zhongchenzhou.wordpress.com/2011/12/05/iis-7-7-5-allow-post-requests-to-html-files/