【问题标题】:Receiving a 500 internal server error when I have a '%' symbol in the query string当我在查询字符串中有“%”符号时收到 500 内部服务器错误
【发布时间】:2011-01-10 11:59:18
【问题描述】:

我正在尝试诊断客户站点遇到的问题。基本上,当您在他们的网站上进行地址搜索时,您可以为通配符搜索指定 % 符号。例如,您可以搜索Be% 以返回Belfast 等。

这会查询数据库,然后将您重定向到结果页面,并在查询字符串中传递搜索条件,例如 results.aspx?criteria=Search%20criteria%20is%20Be%

如果您搜索 %Belf 之类的内容,则会出现问题,因为 %Be 是 URL 编码中的保留字符。因此,我对其进行了编码以将% 替换为%25% 符号的 URL 编码表示)。这在我的测试机器上运行良好,现在 URL 为 results.aspx?criteria=Search%20Criteria%20is%20%25Be

但是,由于某种原因,这在我们的客户网站上不起作用,我不知道为什么。该页面不断出错:

错误代码:500 内部服务器错误。请求被拒绝 HTTP 过滤器。请联系服务器管理员。 (12217)

任何时候你搜索类似%Be%Fa%Fe等的东西等等

有谁知道是否有为此或类似的 IIS 设置?

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?
  • 不,抱歉,我最终只是执行了通配符查询,然后从 URL 中删除了百分比符号

标签: c# .net url


【解决方案1】:

这能解决您的问题吗?它由 Zubair Alexanderhttp://blog.techgalaxy.net/archives/2521

撰写

【讨论】:

    【解决方案2】:

    您的服务器上可能安装了URLScan。如果检测到无效字符,URLScan 会拦截请求并拒绝它们。它旨在保护您的网站免受恶意攻击和 SQL 注入。如果您没有正确配置它,那么它将拒绝完全合理的请求。查看您网站上的 ISAPI 过滤器,看看是否有 URLScan。

    【讨论】:

    • 不,ISAPI 过滤器列表中没有任何内容,这就是我感到困惑的原因,IIS 似乎完全按照我在测试 VM 上的配置方式进行配置
    • 确保您在正确的地方寻找。在 IIS6 中,右键单击名为 Website 的文件夹并查看其 ISAPI 过滤器。 URLScan 不会显示在实际的网站 ISAPI 过滤器列表中。另外,您检查过您的 IIS 日志吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多