【问题标题】:Could I get by HttpModule the URL that contains * before?我可以通过 HttpModule 获取之前包含 * 的 URL 吗?
【发布时间】:2009-11-10 15:17:20
【问题描述】:

我的网站在 ASP.NET 3.5、IIS7、集成管道模式下运行。我的 HttpModule 正在获取对所有资源的请求,包括这样的 URL: http://my-site.com/address

我会在用户的 URL 中支持“*”符号。 ASP.NET 阻止所有导航到此类地址的尝试,并显示以下错误消息:

HTTP 错误 400.0 - 错误请求 ASP.NET 在 URL 中检测到无效字符。

在这种情况下,执行不会到达“BeginRequest”处理程序。

是否有可能获得处理带有“*”符号的 URL(如果可能,还有其他保留)。

谢谢

【问题讨论】:

    标签: asp.net iis-7 url-rewriting


    【解决方案1】:

    在 URL 中带有 * 的目的是什么,您可以禁用某些 URL 过滤设置以允许这样做,但这会影响您网站的安全性。如果您确实需要这样做,请查看以下内容:

    http://dirk.net/2008/06/09/ampersand-the-request-url-in-iis7/ http://support.microsoft.com/kb/820129 http://www.lostechies.com/blogs/joshuaflanagan/archive/2009/04/27/asp-net-400-bad-request-with-restricted-characters.aspx

    在 web.config 中正确编码和注册的 HttpModule 将自动接收 ASP.Net 开始处理的任何请求,如果 ASP.Net 在开始处理之前拒绝该请求,则 BeginRequest 方法将永远不会被调用。

    根据您要执行的操作,创建一个 HttpHandler 并使用通配符路径注册它可能会更好。

    【讨论】:

    • 第一个和第二个链接都假设更新注册表设置(这对我来说不合适,因为我的网站由大公司托管,当然不会为我更改他们的注册表)。第三个包含解释为什么这是不可能的链接(这是你的第一个链接:))并建议将这些符号放在“?”之后。这两个都不适合我。所以我想没有其他方法可以实现我的请求。我来宾说我应该改变我的逻辑,并且在 URL 中不使用“*”...... :(如果有任何其他想法 - 欢迎任何人!无论如何,RobV,谢谢你的回答。
    猜你喜欢
    • 2023-03-15
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多