2

別の Web サイトから通常の HTTP POST を介して送信された XML データを受信する IHttpHandler 実装を作成しています。実装のプロトタイプは次のとおりです。

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; でなければなりません。または > & gt; など。

編集:これは次の複製であることがわかりました: How can Request Validation be disabled for 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 に答える