답변:
오류 페이지에서 해결책을 찾았습니다. requestValidationMode = "2.0"을 추가해야합니다.
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
한 페이지에 대해 유효성 검사를 2.0으로 다시 설정하는 방법이 있습니다. 아래 코드를 web.config에 추가하십시오.
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
나는 이것이 오래된 질문이라는 것을 알고 있지만 MVC 3 에서이 문제가 발생하면 ActionMethod
with를 장식 [ValidateInput(false)]
하고 단일 요청 유효성 검사를 끌 수 있습니다 ActionMethod
. 또한 web.config
파일을 변경할 필요가 없으므로 다른 곳에서도 .NET 4 요청 유효성 검사를 계속 사용할 수 있습니다.
예 :
[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
// Do your own checking of value since it could contain XSS stuff!
return View();
}
이것은 유효성 검사 모드를 변경하지 않고 작동합니다.
의 System.Web.Helpers.Validation.Unvalidated
도우미 를 사용해야합니다 System.Web.WebPages.dll
. UnvalidatedRequestValues
유효성 검사없이 폼과 QueryString에 액세스 할 수 있는 객체 를 반환합니다 .
예를 들어
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
MVC3 및 .NET 4에서 작동합니다.
또 다른 접근 방식은 4.0 유효성 검사 동작을 유지하지만 파생 RequestValidator
하고 설정 하는 자체 클래스를 정의하는 것 입니다.
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
( YourNamespace.YourValidator
잘, 당신은 추측 할 수 있어야한다 ...)
이렇게하면 4.0s 동작 (특히 유효성 검사가 처리 초기에 발생 함)의 이점을 유지하면서 통과해야하는 요청도 허용 할 수 있습니다.