Я использую следующий метод внутри моего проекта ASP.NET MVC, чтобы получить некоторые XML-данные из другого веб-сервиса: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 });
}
}
Запрос в действии работает идеально и I получите правильный ответ, когда я отлаживаю код. Но, к сожалению, когда я смотрю на инструменты Chrome Debug, код ответа из моего действия (а не запрос, отправленный с использованием WebRequest
) равен 500 с ошибкой: «Потенциально опасное значение Request.Form было обнаружено у клиента (xml = somexml) . ".
Есть ли какая-то выходная проверка или я пропустил что-то еще здесь? Кроме того, тело POST-запроса на метод контроллера MyAction
состоит из данных XML, но с использованием атрибута ValidateInput(false)
и объекта Unvalidated
объекта Request
я не получаю исключения и все работает нормально внутри метода.
EDIT: РЕШЕНИЕ
Благодаря ответ, который я отметил, как принято, я не только изменил проверку входных данных на соответствие со стандартами даты, я копал глубже в возможные причины и понял, что проблема была глобальный OutputCacheAttribute
. This post окончательно решил проблему.