【问题标题】:ASP.NET [HttpException (0x80004005): Cannot use a leading .. to exit above the top directory.]ASP.NET [HttpException (0x80004005): 无法使用前导 .. 退出顶级目录。]
【发布时间】:2008-11-08 11:45:00
【问题描述】:

加载页面时出现以下错误。

[HttpException (0x80004005): 无法使用前导 .. 退出顶级目录。]

不知道该怎么办?谁能帮帮我?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我猜你做过这样的事情:

    Response.Redirect("../SomePage.aspx");
    

    使用相对路径时,您只能导航到与发出请求的页面位于同一虚拟目录中的页面。您所做的是从位于虚拟顶部的页面中调用此路径目录树。所以你有一些选择:

    1. 更正您的网址,使其不指向更高级别。即:删除../
    2. 使用完整的网址。即:http://www.example.com/SomePage.aspx
    3. 使用 IIS 将虚拟目录设置在更高级别。

    对于选项 3:

    1. 打开 IIS 管理器。
    2. 转到页面所在的目录并右键单击/属性。
    3. 在虚拟目录选项卡上选择删除。
    4. 关闭对话框并右键单击您希望成为根目录的/属性。
    5. 在虚拟目录选项卡上选择添加

    【讨论】:

      【解决方案2】:

      很可能是 googlebot 或其他一些机器人正在扼杀您的网站。

      http://www.kowitz.net/archive/2006/12/11/asp.net-2.0-mozilla-browser-detection-hole.aspx

      http://todotnet.com/post/2006/07/01/Get-GoogleBot-to-crash-your-NET-20-site.aspx

      解决方案是在您网站的 app_browser 文件夹中添加 .browser 文件。

      【讨论】:

        【解决方案3】:

        我意识到这和罪一样古老,但对我来说,导致它的原因是我在数据库集中有一个带有 ../ 的图像的相对链接。当我的页面尝试在根目录中加载图像的 ImageUrl 时,它工作正常,但在子目录中它却出现了。

        将其更改为 ~ 解决了问题。

        【讨论】:

          【解决方案4】:

          根据您的情况,这可能会或可能不会有帮助,但我上周遇到了这个错误。我的解决方案是更改 My Project 中的 Web 设置以使用本地 IIS 服务器而不是 Visual Studio Web 服务器。

          【讨论】:

            【解决方案5】:

            我可以通过在 web.config 中的 forms-tag 上设置 cookieless-attribute 来解决这个问题:

            <authentication>
               <forms cookieless="UseCookies" />
            </authentication>
            

            【讨论】:

              【解决方案6】:

              抱歉,因为这已经很老了,但是我在 MVC3 应用程序上遇到这个问题已经有几天了。 我不断进入我的 _Layout.cshtml 文件并删除对 css 文件或 javascript 的任何引用(我在此应用程序中使用 JQuery)以找到可怕的 ../ 引用。我找不到一个。然后我试图通过将重定向放到我的应用程序的根目录中来绕过我的问题。那也失败了。 YellowScreenOfDeath 上的堆栈轨迹给了我一个线索:

              [HttpException (0x80004005): Cannot use a leading .. to exit above the top directory.] System.Web.Util.UrlPath.ReduceVirtualPath(String path) +11496719 System.Web.Util.UrlPath.Reduce(String path) +171 System.Web.Configuration.**AuthenticationConfig**.GetCompleteLoginUrl(HttpContext context, String loginUrl) +218 System.Web.Security.FormsAuthenticationModule.OnEnter(Object source, EventArgs eventArgs) +156 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270

              归根结底,我在 web.config 中有这个带有“../”的内容。删除它或更改上引用解决了我的问题。

                  <authentication mode="Forms">
                   <forms loginUrl="../home.aspx" timeout="2880" />
                  </authentication>
              

              【讨论】:

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