【问题标题】:ValidateRequest per controlValidateRequest 每个控件
【发布时间】:2011-01-05 22:09:09
【问题描述】:

我的 ASP.NET 页面包含“ValidateRequest = true”。但是,页面中有一个文本框,我不希望 ASP.NET 对其进行验证。有没有办法让它为那个控制假?如果没有,是否有办法忽略“潜在威胁”错误,假设它来自该特定控件?

谢谢

【问题讨论】:

  • 为什么要允许来自任何输入控件的秘密输入?
  • 这部分与我的另一篇文章有​​关:stackoverflow.com/questions/2045188/… 由于密码正在被散列,我不必担心那个特定的输入,因为它从未显示或存储在数据库中。但是,我希望 ASP.NET 涵盖其他输入。

标签: c# asp.net error-handling validate-request


【解决方案1】:

我知道的唯一方法是调用 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);
}

【讨论】:

    【解决方案2】:

    看看my question。显然 .NET 4.5 现在支持从页面请求验证中排除控件。

    http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多