HTTP-глагол POST, используемый для доступа к пути «[мой путь]», не разрешен - PullRequest
2 голосов
/ 06 января 2011

Я получаю сообщение об ошибке: «HTTP-глагол POST, используемый для доступа к пути« [мой путь] », не разрешен».

Ошибка вызвана тем фактом, что я реализую элемент формы HTML, который использует метод POST и не определяет явно страницу .aspx в своем параметре ACTION.

Например:

<form action="" method="post">
  <input type="submit" />
</form>

Приведенный выше HTML-код находится в файле "/foo/default.aspx".

Теперь, если пользователь указывает URL-адрес на корневой каталог «foo» без указания файла aspx (т. Е. «http://localhost/foo")», а затем отправляет форму, появляется ошибка «HTTP-глагол POST, используемый для доступа к пути« / foo »). не допускается. "будет брошен.

Однако, если пользователь переходит к «http://localhost/foo/default.aspx" и затем отправляет форму, все идет хорошо (даже если параметр ACTION оставлен пустым).

Примечание. Если я явно добавлю имя страницы .aspx (default.aspx) в параметр ACTION, ошибок не будет. Поэтому приведенный ниже пример работает нормально, независимо от того, определяет пользователь имя файла в URL или нет.

<form action="default.aspx" method="post">
  <input type="submit" />
</form>

Мне было любопытно, почему выдается ошибка, поэтому я прочитал Microsoft KB , в котором указано

Эта проблема возникает из-за того, что клиент делает HTTP-запрос, отправив Метод POST для статической HTML-страницы. Статические HTML-страницы не поддерживают POST метод.

Полагаю, в основе объяснения есть смысл, однако в моем случае моя форма не отправляется на статическую HTML-страницу - она ​​отправляется на ту же страницу, на которой живет HTML-форма (default.aspx) .. ... это подразумевается для параметра ACTION, который остается пустым.

Можно ли настроить IIS (или иным образом), который позволит нам выполнять POST-форму и сохранять параметр ACTION пустым?

Ответы [ 6 ]

3 голосов
/ 06 января 2011

Проверьте ваши документы по умолчанию - без указания действия, оно может быть возвращено к foo/.Если у вас есть документ по умолчанию (то есть: Default.html, а не Default.aspx), который является статическим, это может вызвать эту проблему.

1 голос
/ 06 января 2011

Попробуйте использовать "./" в качестве действия.

0 голосов
/ 18 марта 2014

Я получил эту ошибку, когда настраивал собственный обработчик HTTP, не используя формы. Вы должны сообщить IIS (или вашему WebDevServer в VisualStudio), что вы обрабатываете определенные страницы с помощью своего собственного обработчика. Это делается путем добавления записей в файл web.config. Я мог бы напечатать их, но жизнь коротка, и солнце за двором, так что вот ссылка - но прокрутите вниз до «Регистрация собственного обработчика HTTP в IIS». Или прочитайте все это, поскольку это все хорошо, мясистые технические самородки ...

http://msdn.microsoft.com/en-us/library/ms227433%28v=vs.100%29.aspx

Надеюсь, это поможет.

0 голосов
/ 09 апреля 2013

ASP.Net ISAPI DLL была подключена для перевода всех (*) URL, поэтому пришлось выполнить следующие шаги:

  1. Нажмите на сайте
  2. Выберите Свойства и на вкладке Виртуальный каталог нажмите Конфигурация
  3. Удалите ASP.Net ISAPI DLL (C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll)
  4. Перезагрузите IIS и попробуйте снова.
0 голосов
/ 20 июля 2012

У меня произошло то же самое - с действием = "" в теге формы. Не знаю, как оно туда попало. Иногда, когда я редактирую gridView, он не «синхронизируется» с HTML. Может быть, это то, что случилось. Weird. Мне тоже понадобилось время, чтобы найти!

0 голосов
/ 29 февраля 2012

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

Я не знаю, что решило проблему, но я думаю,ошибка исчезла из-за какого-то Центра обновления Windows, который был внедрен на моем компьютере разработчика в течение года.

В настройках IIS 7 я заметил одну вещь: «ISAPI.DLL» (в «Обработчике»Раздел "Отображения") отключен.Я не могу понять, как его «включить», чтобы попытаться воспроизвести проблему, чтобы показать, что ISAPI.DLL вызывает (или связана) проблему.

В любом случае, я не могувоспроизведите эту ошибку, которая возникает, когда я оставляю атрибут «action» пустым в теге HTML Form.Итак, я предполагаю, что существует обновление IIS и / или .NET Framework, которое неявно или явно исправляет ошибку, упомянутую в OP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...