Отправка данных XML через HTTP POST в IHttpHandler вызывает исключение HttpRequestValidationException - PullRequest
2 голосов
/ 20 января 2011

Я пишу реализацию IHttpHandler, которая будет получать данные XML, отправленные через обычный HTTP POST с другого веб-сайта. Вот прототип реализации:

public class MyHandler : IHttpHandler
{
   public void ProcessRequest(HttpContext context)
   {
      string s = context.Request.Form["input"]; // <== this throws HttpRequestValidationException
      XmlDocument doc = new XmlDocument();
      doc.LoadXml(s);
      // ...
   }

   public bool IsReusable
   {
      get { return false; }
   }
}

Я тестирую реализацию на этой простой странице:

<body>
   <form method="post" action="MPSConnector.Results.dsvc">
      <textarea name="input"></textarea>
      <input type="submit" value="Go!" />
   </form>
</body>

Проблема в том, что когда я пытаюсь прочитать значение «input» из опубликованных данных, если оно содержит строку xml, все, что я получаю, это HttpRequestValidationException. Я пытался использовать

<pages validateRequest="false">

в web.config и добавление атрибута validate = "false" в объявление обработчика в разделе httpHandles без результатов.

Как я могу прочитать опубликованный xml в моем обработчике? (обратите внимание, что я должен использовать IHttpHandler для этой задачи).

РЕДАКТИРОВАТЬ: Версия платформы: 4.0, IIS 7.x

Спасибо всем! :)

Ответы [ 2 ]

0 голосов
/ 29 апреля 2015

Просто измените web.config следующим образом:

   <location path="Handlers/MyHandler.ashx">
      <system.web>
         <httpRuntime requestValidationMode="2.0" />
      </system.web>
   </location>
0 голосов
/ 20 января 2011

Насколько я знаю, вам просто нужно закодировать этот XML с сущностями.

Я имею в виду, что <должно быть & lt; или> & gt; и т. д.

РЕДАКТИРОВАТЬ: Я обнаружил, что это дубликат: Как отключить проверку запросов для HttpHandlers?

Попробуй это !! :)

...