【问题标题】:IIS 7 Bad Request response when %0A exists in the URL当 URL 中存在 %0A 时,IIS 7 错误请求响应
【发布时间】:2011-09-01 20:37:44
【问题描述】:

我有一个应用程序应该接受来自 Salesforce 的不安全字符。它们是 %0A 和 %0D(到目前为止...),它们不工作。

我已将allowDoubleEscaping 设置为truerequestValidationMode 设置为2.0requestPathInvalidCharacters 设置为BLANKrelaxedUrlToFileSystemMapping 设置为truemaxRequestLength 设置为1024。 >

没有用。然后我尝试为 400 设置一个自定义错误以重定向到同一页面,而不传递 Salesforce 正在发送的数据。也没用。

然后我尝试通过 IIS 7 错误页面部分执行相同的操作,但仍然无法正常工作。

我该怎么做:

  1. 让应用接受字符?
  2. 还是让应用/IIS 重定向到同一页面进行手动输入?

所有这些都在一个 ASP.NET MVC 3 应用程序中,但我怀疑这是否重要,因为它可能是 IIS 在它甚至调用 ASP.NET 运行时之前停止它。

我将不胜感激。提前致谢!

【问题讨论】:

  • 错误来自 ASP.NET 还是 IIS?您通常可以区分,ASP.NET 有 YSOD(黄屏死机),IIS 7 看起来......不同。
  • IIS 可能,它是白色的,并显示“错误请求 {HR} HTTP 错误 400。请求 URL 无效。”
  • @Alex 你有没有找到解决这个问题的方法?我在 URL 中遇到了与 %0A 和 %0D 完全相同的问题。
  • @Geekman,我做到了,但是已经很久了,我不确定答案是什么。无论如何,我在 Web.config 中有 requestPathInvalidCharacters="<,>,*,&,:,\"relaxedUrlToFileSystemMapping="true"。我还在 IIS 中的请求过滤 > 编辑功能设置下启用了Allow Double Escaping。你可以看看它是否是这些设置之一,但就像我说的,我不记得是什么让它起作用了。
  • @Alex,你上面列出的一切都不适合我。可能你还记得别的吗?

标签: asp.net asp.net-mvc asp.net-mvc-3 iis iis-7


【解决方案1】:

您可能想在 IIS 管理器中查看,单击您的服务器节点(或网站节点),找到 Request Filtering 图标。转到URL 选项卡,您可以在此处始终允许特定的 URL,或更改一般处理 URL 过滤的方式。我确信这些设置在 web.config 文件的部分下也可用,但我不知道所有设置元素和属性是什么(我相信你可以进行搜索并轻松找到它们)。

在您修复此问题后,您可能还必须克服 ASP.NET。

【讨论】:

    【解决方案2】:

    检查您的 URLScan 配置。 http://learn.iis.net/page.aspx/476/common-urlscan-scenarios/

    您的 [DenyUrlSequences] 部分是否恰好列出了此内容?

    【讨论】:

      【解决方案3】:

      也许为时已晚,但对我来说,它通过使用 AllowRestrictedChars 注册表设置更改配置的异常来工作(如 https://support.microsoft.com/en-us/kb/820129 中所述)。默认值为 0,我将其更改为 1。如果非零,Http.sys 接受解码为 U+0000 – U+001F 和 U+007F – U+009F 范围的请求 URL 中的十六进制转义字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2019-08-28
        • 1970-01-01
        • 2023-02-14
        • 1970-01-01
        相关资源
        最近更新 更多