HTTP POST для внешней формы ASPX, в некоторых случаях вызывающей ошибку HTTP 405 - PullRequest
0 голосов
/ 31 января 2009

У меня есть ситуация, когда мы агрегируем то, что составляет маркетинговые данные от N числа клиентов, когда клиент может разместить HTML-форму, используя любой бэкэнд по своему выбору, причем каждое действие формы указывает на путь, который мы хостинг У каждого клиента свой URL, нет аутентификации (но есть некоторая простая проверка данных), и все это обычно работает просто отлично.

Тем не менее, есть одна маленькая морщинка, которую я никак не могу осознать.

aspx, который обрабатывает отправленные данные, находится по пути, назовем его ~ / submit / default.aspx. Идея состоит в том, что мы должны быть в состоянии передать нашему партнеру URL-адрес вдоль строк "http://sample.com/submit/?foo=bar" в качестве действия их формы. Однако это приведет к ошибке HTTP 405". Ресурс не разрешен ".

Действие формы, установленное как "http://sample.com/submit/default.aspx", работает отлично, однако, отлично.

  • Default.aspx устанавливается в качестве одного из имен документов по умолчанию в IIS 6.
  • Расширение файла .aspx правильно сопоставлено с правильным .Net dll и имеет активированные для отображения глаголы GET, HEAd, POST и DEBUG.

Это были единственные две вещи, о которых я мог подумать, чтобы проверить сначала - у кого-нибудь еще есть идеи? Я бы предпочел использовать переписывание / маршрутизацию URL с IIS7, но это, к сожалению, не вариант - и у меня есть ряд дополнительных требований, где «чистые» URL будут очень предпочтительны, поэтому решение этой проблемы будет довольно основная проблема, чтобы пройти.

Ответы [ 3 ]

1 голос
/ 31 января 2009

IIRC, IIS будет использовать документы по умолчанию, только если запрашиваемый ресурс является каталогом. Так как запрошенный ресурс в первом случае - нет, он никогда не пройдет через обработчики документов по умолчанию - вместо этого произойдет сбой POST для незарегистрированного расширения скрипта (405).

0 голосов
/ 10 марта 2010

по какой-то причине он не рендерил мой пример кода! вам, ребята, нужно декодировать и кодировать знаки меньше и больше, чем для вашего текстового поля "Ваш ответ" .... в любом случае,

<httpHandlers>
<add verb="your.class.to.handle.doc.files"/>
</httpHandlers>

- это то, что должно быть в вашем файле web.config.

0 голосов
/ 10 марта 2010

это может зависеть от типа документа "http://sample.com/submit/?foo=bar"..., если ваш IIS не знает, как обрабатывать возвращаемый ему тип документа (который затем возвращает его вам, клиенту), тогда вы можете получить ошибку http 405. Это означает, что он не знает, как обрабатывать этот тип документа, с точки зрения сервера. в вашем файле web.config, который управляет приложением. HTTP-обработчики представляют собой модульные фрагменты кода, написанные и скомпилированные на языке .net, и действуют как своего рода «сервлет», если вы знакомы с терминами Java. Это кусок кода, который что-то записывает клиенту - в вашем случае, возможно, рендеринг файла .doc, найденный программно в вашем классе обработчика.

...