【问题标题】:ASP.Net error: "Cannot use a leading .. to exit above the top directory"ASP.Net 错误:“不能使用前导 .. 退出顶级目录”
【发布时间】:2010-09-16 00:29:44
【问题描述】:

我在我的生产站点上每小时都会看到几次此错误,但不太确定如何修复它。我已经 grepped 了源代码,并且我没有在代码中的任何地方使用“../”来生成路径。

我的应用程序在 Win2003 服务器上的 IIS6 上运行。它使用 URLRewriter.Net 来允许网站拥有友好的 URL,我想知道这是否会导致问题。

我已经在谷歌上搜索了一个解决方案,并找到了几种可能性,但没有一个对我有用。

我已尝试创建一个新的 App_Browser 文件以强制标签编写器设置使用特定的 HtmlTextWriter,正如最流行的解决方案之一所建议的那样,但这对我不起作用。我还没有看到任何其他可能的解决方案。

【问题讨论】:

    标签: asp.net iis-6 directory windows-server-2003


    【解决方案1】:

    使用反射器深入研究 URLRewriter.Net 代码。

    【讨论】:

      【解决方案2】:

      这可能是由于使用了“~/something”,可能是在超链接控件上。当物理文件与友好 URL 位于不同的目录级别时,ASP.NET 在它生成的相对 URL 中使用了太多的 ../,从而产生此错误。如果您不能只使用绝对 URL,我相信您可以使用 Page.ResolveUrl("~/foo/bar") 来获取正确的相对 URL。

      【讨论】:

        【解决方案3】:

        我会给你的重写路径再一次通过,看看是否有一个路径包含一个不存在的文件夹,已经被删除或者实际上在 Web 应用程序之外。你能把重写规则贴在这里吗?

        【讨论】:

          【解决方案4】:

          您确定是您造成的错误吗?一些脚本(代码 Red/Nimda)在 Internet 上寻找类似错误的 URL 遍历。

          这是内部的还是外部的?是否有可能您的机器正在被扫描?

          【讨论】:

            【解决方案5】:

            我能够通过安装 .NET 3.5 SP1 解决此问题。

            【讨论】:

              【解决方案6】:

              只需在您网站的 ASP 设置中将启用父路径设置为 True

              这解决了我的问题

              【讨论】:

                猜你喜欢
                • 2019-09-17
                • 1970-01-01
                • 2012-01-14
                • 2011-01-16
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-04-19
                相关资源
                最近更新 更多