我正在编写一个IHttpHandler实现,它将接收来自其他网站的常规HTTP POST发送的XML数据。 这是实现的原型:
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>
问题在于,当我尝试从发布的数据中读取“输入”值时,如果它包含一个xml字符串,那么我得到的只是一个HttpRequestValidationException。 我尝试使用
<pages validateRequest="false">
在web.config中,并在httpHandles部分的处理程序声明中放置validate =“false”属性,但没有结果。
如何在我的处理程序中阅读已发布的xml? (请注意,我必须使用IHttpHandler执行此任务)。
编辑:框架版本:4.0,IIS 7.x
谢谢大家! :)
答案 0 :(得分:0)
据我所知,您只需要使用实体对该XML进行编码。
我的意思是&lt;应该是&amp; LT;或者&gt; &安培; gt;等等。
编辑:我发现这与以下内容重复:How can Request Validation be disabled for HttpHandlers?
试试这个!! :)
答案 1 :(得分:0)
只需像这样修改web.config:
<location path="Handlers/MyHandler.ashx">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>