2

我正在编写一个 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 中,并将 validate="false" 属性放在 httpHandles 部分的处理程序声明中,没有结果。

如何在我的处理程序中读取发布的 xml?(请注意,我必须为此任务使用 IHttpHandler)。

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

谢谢你们!:)

4

2 回答 2

0

据我所知,您只需要使用实体对该 XML 进行编码。

我的意思是 < 应该是 & lt; 或 > > 等。

编辑:我发现这是重复的:如何为 HttpHandlers 禁用请求验证?

试试这个!!:)

于 2011-01-20T10:43:39.070 回答
0

只需像这样修改 web.config:

   <location path="Handlers/MyHandler.ashx">
      <system.web>
         <httpRuntime requestValidationMode="2.0" />
      </system.web>
   </location>
于 2015-04-29T13:17:59.037 回答