私は別のWebサービスから、いくつかのXMLデータを取得するために私のASP.NET MVCプロジェクト内の以下の方法を使用しています:ASP.NET MVC:出力の検証
[HttpPost]
[ValidateInput(false)]
public ActionResult MyAction()
{
try
{
byte[] reqContent = Helper.GetBytes(Request.Unvalidated.Form["xml"]);
WebRequest request = WebRequest.Create("url");
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = reqContent.Length;
request.GetRequestStream().Write(reqContent, 0, reqContent.Length);
string responseXml = null;
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
responseXml = reader.ReadToEnd();
}
}
return Content(responseXml, "text/xml");
}
catch(Exception)
{
return Json(new { Error = true });
}
}
要求をアクションは完璧に動作し、私の内側私はコードをデバッグするときに適切な応答を得る。しかし、残念ながらChrome Debugツールを見ると、WebRequest
を使用して送信されたリクエストではなく、私のアクションのレスポンスコードは500です。 "潜在的に危険なRequest.Form値がクライアントから検出されました(xml = somexml) 。 "。
出力検証には何らかの種類がありますか、ここで他のものを紛失していますか? MyAction
コントローラメソッドへのPOSTリクエストの本体もXMLデータで構成されていますが、Request
オブジェクトのValidateInput(false)
属性とプロパティーのUnvalidated
プロパティを使用しても例外はなく、すべて正常に動作します。
EDIT:SOLUTION受け入れとして私はマークの答えに
おかげで、私は日付のみ規格までの入力検証を変更していない、私はまた、考えられる原因を深く掘って、問題があったことを実現しましたグローバルOutputCacheAttribute
。 This postがついにこの問題を解決しました。