我使用“Internet 应用程序”模板创建了一个新的 ASP.NET MVC 3 / .NET Framework 4.0 站点。我使用 Nuget 安装Windows Azure Web Role (MVC3)包,然后按照访问控制服务演练设置 Windows Live ID 和 Google 身份验证。
很快,我遇到了“从客户端检测到潜在危险的 Request.Form 值”错误,并按照Windows Identity Foundation wiki中的文章尝试解决它。不幸的是,我没有尝试过任何工作,包括:
在根 web.config 和 Views\web.config 中设置
<httpRuntime requestValidationMode="2.0"/>
and<pages validateRequest="false">
从 WIF SDK复制
SampleRequestValidator
到项目中并<httpRuntime requestValidationType="SampleRequestValidator"/>
在 web.configs 中进行设置
我也尝试过这些变体但没有成功。
有任何想法吗?
这是完整的例外:
异常详细信息: System.Web.HttpRequestValidationException:从客户端检测到潜在危险的 Request.Form 值(wresult=" <t:RequestSecurityTo...
")。
说明:请求验证检测到潜在危险的客户端输入值,请求的处理已中止。此值可能表示试图破坏您的应用程序的安全性,例如跨站点脚本攻击。要允许页面覆盖应用程序请求验证设置,请将 httpRuntime 配置部分中的 requestValidationMode 属性设置为 requestValidationMode="2.0"。示例:<httpRuntime requestValidationMode="2.0" />
。<pages>
设置此值后,您可以通过在 Page 指令或配置部分中设置 validateRequest="false" 来禁用请求验证。但是,强烈建议您的应用程序在这种情况下明确检查所有输入。有关详细信息,请参阅http://go.microsoft。
堆栈跟踪:
[HttpRequestValidationException (0x80004005):从客户端检测到潜在危险的 Request.Form 值 (wresult=" <t:RequestSecurityTo...
")。]
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 请求)+75 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +205 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest 请求)+41 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(对象发送者,EventArgs args)+117 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75