2011-01-20 57 views
2

我正在写一个IHttpHandler的实现,将收到通过从其他网站一个普通的HTTP POST发送XML数据。 这里有一个原型的执行情况:通过HTTP POST发送XML数据的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> 

的问题是,当我尝试阅读张贴的“输入”值数据,如果它包含一个xml字符串,我得到的只是一个HttpRequestValidationException。 我试图在web.config中使用

<pages validateRequest="false"> 

,和使验证=“假”,在处理程序声明属性在httpHandles部分,没有结果。

我如何读取XML贴在我的处理程序? (请注意,我必须使用IHttpHandler完成此任务)。

编辑:框架版本:4.0,IIS 7.x

谢谢大家! :)

回答

0

据我所知,你只需要编码与实体XML。

我的意思是<应& LT;或> & gt,等等。

编辑:我发现这是一个重复:How can Request Validation be disabled for HttpHandlers?

试试这个! :)

+0

喜马蒂亚斯,感谢您的回答。请注意,我无法控制处理程序将收到的数据,我发布的页面只是一个测试示例。我必须假定xml数据将不带编码,这是基于将在生产环境中发送数据的系统文档。 – 2011-01-20 10:50:40

0

就修改这样的web.config中:

<location path="Handlers/MyHandler.ashx"> 
     <system.web> 
     <httpRuntime requestValidationMode="2.0" /> 
     </system.web> 
    </location>