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

时间:2008-11-08 11:45:01

标签: asp.net

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

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

不知道该怎么办?任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:4)

我猜你做过这样的事情:

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

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

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

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

答案 1 :(得分:1)

很可能是谷歌机器人或其他一些机器人正在杀死你的网站。

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文件。

答案 2 :(得分:1)

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

将其更改为〜修复问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

道歉,因为这是非常古老的,但我在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>