내 MVC3 사이트에서 requestValidationMode = "2.0"을 새 ValidateInput 특성으로 설정하는 것을 피했지만 지금은 인증을 위해 WIF로 전환하려고 시도하고 있으며 STS가 리디렉션 할 때 내 사이트로 돌아가서 WSFederationAuthenticationModule.IsSignInResponse
이 Request.Unvalidated().Form
대신 Request.Form
을 호출하기 때문에 예외가 발생합니다 ... requestValidationMode = "2.0"(이 작업을 수행하고 싶지 않습니다)로 가지 않고이 문제를 해결할 수있는 방법이 있습니까?WSFederationAuthenticationModule.IsSignInResponse의 잠재적 인 Request.Form
다음은 스택 추적이므로, 내 뜻을 알 수 있습니다. 내 컨트롤러의 메소드는 실제로 호출되지 않습니다.
[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (wresult="<trust:RequestSecuri...").]
System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8755668
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +122
System.Web.HttpRequest.get_Form() +114
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.IsSignInResponse(HttpRequest request) +21
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +121
Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +78
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
@Euginio : 그 정보가 [Claims Identity Guide] 책 (http://claimsid.codeplex.com/releases/view/50000)의 [2010 년 8 월 2 일] 릴리스에 분명히 추가되었습니다. 이것은 곧 공식 문서가 될 것인가? [MSDN] (http://www.google.com/search?q=%2BWIF+%2BRequestValidator+site%3Amsdn.microsoft.com+-site%3Asocial.msdn.microsoft.com) 및 [TechNet] (http : // www.google.com/search?q=%2BWIF+%2BRequestValidator+site%3Atechnet.microsoft.com+-site%3Asocial.technet.microsoft.com)에는이 내용이 전혀 언급되어 있지 않습니다. WIF 알려진 문제점 페이지의 업데이트가 최소한 순서대로 표시됩니다. –
이것은 유효성 검사를 2.0으로 설정하고 Global.asax.cs Application_BeginRequest에서 해당 코드 조각과 비슷한 코드를 사용하여 로그온 포스트 백을 제외한 모든 경우에 Request.ValidateInput()을 호출하는 것보다 훨씬 깨끗한 솔루션처럼 보입니다. . – Jaykul
그리고 작동합니다 ;-) – Jaykul