Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 通过HTTP POST将XML数据发送到IHttpHandler会导致HttpRequestValidationException_.net_Asp.net_Ihttphandler - Fatal编程技术网

.net 通过HTTP POST将XML数据发送到IHttpHandler会导致HttpRequestValidationException

.net 通过HTTP POST将XML数据发送到IHttpHandler会导致HttpRequestValidationException,.net,asp.net,ihttphandler,.net,Asp.net,Ihttphandler,我正在编写一个IHttpHandler实现,它将从另一个网站接收通过常规HTTP POST发送的XML数据。 以下是实现的原型: public class MyHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { string s = context.Request.Form["input"]; // <== this throws HttpRequestValidati

我正在编写一个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; }
   }
}
公共类MyHandler:IHttpHandler
{
公共void ProcessRequest(HttpContext上下文)
{

字符串s=context.Request.Form[“input”];//据我所知,您只需要用实体对XML进行编码

我的意思是,<应该是<;或>>;,等等

编辑:我发现这是以下内容的副本:


试试这个!!:)

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

我的意思是,<应该是<;或>>;,等等

编辑:我发现这是以下内容的副本:


试试这个!!:)

只需修改web.config如下:

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

只需修改web.config,如下所示:

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


Hi Matias,谢谢您的回答。请注意,我无法控制处理程序将接收的数据,我发布的页面只是一个测试示例。我必须假设xml数据将不带编码,基于将在生产环境中发送数据的系统文档。您尝试过使用HTTP模块?如果您收到数据并可以在那里编码(如果是原始XML),那么您的处理程序将收到编码的数据。问题是请求不仅仅包含原始XML(在这种情况下,我需要做的就是从请求对象的InputStream读取XML),但发布了一个完整表单,其中一个值包含一个XML字符串。当我尝试读取此值时(semplified test中的“input”,但请求将包含其他非XML值)我得到了异常。我尝试使用IHttpModule而不是IHttpHandler,但是当我尝试访问请求时。Form NameValueCollection会发生异常。顺便说一下,我不希望在请求管理上使用太多的层,因为应用程序……将自己的逻辑置于此之上(具有一个抽象层,当向特定入口点发出请求时,该抽象层动态创建正确的处理程序).Hi Matias,谢谢您的回答。请注意,我无法控制处理程序将接收的数据,我发布的页面只是一个测试示例。我必须假设xml数据将不带编码,基于将在生产环境中发送数据的系统文档。您尝试过HTTP M吗odule?如果您收到数据,并且可以在那里编码(如果是原始XML),那么您的处理程序将收到编码的数据。问题是请求不只是包含原始XML(在这种情况下,我只需要从请求对象的InputStream读取XML),但发布了一个完整表单,其中一个值包含一个XML字符串。当我尝试读取此值时(semplified test中的“input”,但请求将包含其他非XML值)我得到了异常。我尝试使用IHttpModule而不是IHttpHandler,但是当我尝试访问请求时。Form NameValueCollection会发生异常。顺便说一下,我不希望在请求管理上使用太多的层,因为应用程序……将自己的逻辑置于此之上(具有一个抽象层,当向特定入口点发出请求时,该抽象层动态创建正确的处理程序)。
   <location path="Handlers/MyHandler.ashx">
      <system.web>
         <httpRuntime requestValidationMode="2.0" />
      </system.web>
   </location>