【问题标题】:'requestValidationMode=2.0' make the url case sensitive'requestValidationMode=2.0' 使 url 区分大小写
【发布时间】:2016-07-03 10:29:11
【问题描述】:

我正在开发一些 asp.net MVC4 项目(iis 7)。为了防止“潜在的危险请求”消息,我在 web.config 文件中添加了以下行 "httpRuntime requestValidationMode="2.0" />" 它确实阻止了该消息,但发生了另一件事 - 网址突然变得区分大小写。 当我删除此行时,url 返回不区分大小写,但消息会返回。

有人知道我怎样才能享受这两种优势吗?

非常感谢!

编辑: 好吧,我发现不同之处在于,当我添加这一行时,auth cookie (fedAuth) 是不同的,并且由于某种原因,新的 cookie 具有过期日期和区分大小写。 仍然无法理解差异的原因以及如何防止它。

【问题讨论】:

  • edit 您的帖子以及您的 httpRuntime 节点配置。您可能还错过了路线配置中的某些内容,您应该添加它。使用<httpRuntime requestValidationMode="2.0" relaxedUrlToFileSystemMapping="true" requestPathInvalidCharacters="" enableVersionHeader="false" targetFramework="4.5.2" />,我从未见过这样的行为。 (匹配仍然不区分大小写。)您可能已经更改了其他内容以删除该“安全”功能,请将其包含在您的问题中(例如<pages validateRequest="false">)。
  • 这是我的整个节点。我在 httpRuntime 中只有那个属性。我没有改变其他任何东西。您认为您添加的属性之一是原因吗?我会尽力让你更新。
  • httpRuntime 节点对于disabling request validation 来说是不够的,这就是为什么我猜你应该改变一些其他的东西。无论如何,您的问题没有提供足够的事实来理解您为什么会遇到这样的问题,这是我从未见过的。您可能应该按照我之前评论的要求提供更多信息。这可能有助于其他人了解您的情况出了什么问题。
  • 你能告诉我我应该添加哪些细节吗?我有点困惑。如您所见,我对 web.config 不太满意。

标签: asp.net-mvc-4 httpruntime requestvalidationmode


【解决方案1】:

我搜索了一下 IIS 上的 MVC 是如何区分大小写的,看起来这几乎是 not even supposed to be supported。您可能有一些错误的自定义代码。

这可能是您的路由配置中的一些hack / bad logic(默认位于App_Start/RouteConfig.cs)。或者您的操作过滤器中的一些错误代码、Controller.OnActionExecuting 覆盖,甚至直接在您的操作实现中。

您可能还安装了 URL Rewrite 并且设置不正确。查看一些示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多