C# 验证每个控件的请求
我的ASP.NET页面包含“ValidateRequest=true”。但是,页面中有一个文本框,我不希望ASP.NET对其进行验证。有没有办法让这一个控件为假?如果没有,有没有办法忽略“潜在威胁”错误,假设它来自特定的控制C# 验证每个控件的请求,c#,asp.net,error-handling,validate-request,C#,Asp.net,Error Handling,Validate Request,我的ASP.NET页面包含“ValidateRequest=true”。但是,页面中有一个文本框,我不希望ASP.NET对其进行验证。有没有办法让这一个控件为假?如果没有,有没有办法忽略“潜在威胁”错误,假设它来自特定的控制 谢谢我所知道的唯一方法就是调用HttpRequest类的ValidateString。不幸的是,它是私有的,因此您必须通过反射来完成 我没有测试过这个-它与我使用的代码不完全相同。它是根据我几年前写的代码改编的,所以也许微软有一些新的东西使它更容易实现 MethodInfo
谢谢我所知道的唯一方法就是调用HttpRequest类的ValidateString。不幸的是,它是私有的,因此您必须通过反射来完成 我没有测试过这个-它与我使用的代码不完全相同。它是根据我几年前写的代码改编的,所以也许微软有一些新的东西使它更容易实现
MethodInfo _validateMethodInfo = typeof(HttpRequest).GetMethod("ValidateString", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod);
foreach (string key in Request.Form.AllKeys) {
if (key = "< skipped field name >") {
continue;
}
object[] parameters = { Request.Form[key], key, "Request.Form" };
_validateMethodInfo.Invoke(Request, parameters);
}
MethodInfo\u validateMethodInfo=typeof(HttpRequest).GetMethod(“ValidateString”,BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod);
foreach(Request.Form.AllKeys中的字符串键){
如果(key=“”){
继续;
}
object[]参数={Request.Form[key],key,“Request.Form”};
_validateMethodInfo.Invoke(请求、参数);
}
看一看。显然.NET4.5现在支持从页面请求验证中排除控件
为什么您希望允许任何输入控件进行秘密输入?这部分与我的另一篇帖子有关:由于密码正在被哈希,我不必担心特定的输入,因为它从未显示或存储在数据库中。但是,我希望ASP.NET涵盖其他输入。