【问题标题】:IIS 6: How to handle a space (%20) after .aspxIIS 6:如何处理 .aspx 后的空格 (%20)
【发布时间】:2011-03-21 19:33:36
【问题描述】:

有时,我的 IIS 6 服务器会收到一个在“.aspx”之后包含一个空格的请求,例如: http://www.foo.com/mypage.aspx%20?param=value

紧跟在“.aspx”之后的“%20”会导致服务器产生“404 Page Not Found”。

有没有办法将 IIS 配置为接受“.aspx%20”并处理页面,就好像“%20”不存在一样?

我在 IIS 管理器中查看了站点属性中的“主目录”/“配置”,并为“.aspx%20”添加了一个条目,但这不起作用。任何其他建议表示赞赏。

【问题讨论】:

  • 我还建议在您的代码中找到您忘记该空间的位置,它可能位于重定向或链接上。我从来没有看到他自己出现过空间。

标签: asp.net iis-6


【解决方案1】:

+1 用于自定义 HttpModule(正如 Frédéric Hamidi 建议的那样)。这是一个干净的模块化解决方案,如果您需要,它可以帮助您重写其他 URL。

您的 OnBeginRequest(参考 Frédéric 提供的链接)可能或多或少像这样:

private void OnBeginRequest(object sender, EventArgs e)
{
   HttpContext context = ((HttpApplication)sender).Context;
   string url = context.Request.RawUrl;
   context.RewritePath(url.Replace(".aspx%20",".aspx"), false);
}

【讨论】:

  • 感谢 Paolo 和 Frédéric —— HTTP 模块就像一个魅力!
【解决方案2】:

您可能需要考虑使用writing an HTTP module 从 URL 中删除尾随空格。

【讨论】:

    【解决方案3】:

    覆盖 web.config 中的 404 页面并处理您在代码中描述的情况。

    【讨论】:

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