Я пишу реализацию IHttpHandler, которая будет получать XML-данные, отправленные через обычный HTTP POST с другого веб-сайта. Вот прототип реализации:Отправка XML-данных через HTTP POST в IHttpHandler вызывает HttpRequestValidationException
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>
Проблема заключается в том, что, когда я пытаюсь читать «входного» значение из посланных data, если он содержит строку xml, все, что я получаю, это исключение HttpRequestValidationException. Я попытался с помощью
<pages validateRequest="false">
в web.config и положить VALIDATE = «ложный» атрибут в объявлении обработчика в разделе httpHandles, без результатов.
Как читать прочитанный xml в моем обработчике? (обратите внимание, что для этой задачи я должен использовать IHttpHandler).
EDIT: Framework версии: 4.0, IIS 7.x
Спасибо всем! :)
Hi Матиас, и спасибо за ваш ответ. Обратите внимание, что я не контролирую данные, получаемые обработчиком, страница, которую я опубликовал, является лишь примером для тестирования. Я должен предположить, что данные xml не будут кодироваться, основываясь на документации системы, которая будет отправлять данные в производственной среде. –
Нет проблем. Понимаю, позвольте мне подумать ... –
Вы пробовали с помощью HTTP-модуля? Попробуйте, если вы получите данные, и вы можете закодировать там, если это сырой XML, а затем ваш обработчик получит кодированные данные. –