asp.net-无法使用前导../退出顶层目录

我有一个asp.net网站,我们有带登录页面的admin区域,仅供管理员使用,并且所有站点都允许所有人使用-我需要询问如何为它定义正确的安全配置,因为我收到此错误

Cannot use a leading .. to exit above the top directory. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Cannot use a leading .. to exit above the top directory.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[HttpException (0x80004005): Cannot use a leading .. to exit above the top directory.]
   System.Web.Util.UrlPath.ReduceVirtualPath(String path) +8862087
   System.Web.Util.UrlPath.Reduce(String path) +52
   System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative) +214
   System.Web.UI.Control.ResolveClientUrl(String relativeUrl) +180
   System.Web.UI.WebControls.Image.AddAttributesToRender(HtmlTextWriter writer) +68
   System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) +20
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +20
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +163
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +51
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266

我的配置文件:

 <authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH" protection="All" loginUrl="Admin/LoginPage.aspx" path="/" enableCrossAppRedirects="true">
  </forms>
</authentication>
<authorization>
  <deny users="*" />
</authorization>

Majid asked 2020-08-12T09:03:07Z
9个解决方案
57 votes

这意味着您的网页引用的内容位于页面上一级文件夹中,但是您的页面已经在网站的根文件夹中,因此相对路径无效。 根据您的异常消息判断,看起来是图像控件引起了问题。

您必须具有以下内容:

<asp:Image ImageUrl="..\foo.jpg" />

但是,由于页面本身位于网站的根文件夹中,因此它不能向上一级引用内容,这就是领先的..\所做的。

Adam Ralph answered 2020-08-12T09:03:23Z
16 votes

您可以使用../img/myImage.png而不是../img/myImage.png来避免ASP.NET页中的此错误。

Majid answered 2020-08-12T09:03:44Z
9 votes

您在某处具有../Images/test.jpg样式的图像或Favicon链接,如果“ ../”有效,它将超出站点顶部,例如:

图片:

http://example.com/Images/test.jpg

http://example.com/Pages/test.aspx

在该页面上有效:../Images/test.jpg
会引发错误:../../Images/test.jpg

Nick Craver answered 2020-08-12T09:04:22Z
2 votes

这意味着其中一个路径在其开头具有“ ..”,这将导致退出网站的根文件夹层次结构。 您需要Google“ asp.net相对路径”或类似的东西来帮助您解决问题。

顺便说一句,您看到的异常页面中包含问题出处的提示。 它实际上会告诉您在哪个文件中发现了问题。

为了避免将来出现此异常,请在整个解决方案中搜索以下字符串:“ ../”。 如果您在网站根目录的文件中找到任何这些文件,请对其进行寻址。

user3409893 answered 2020-08-12T09:04:52Z
2 votes

以我为例,原来在母版页中HTML被注释掉了!

谁知道这样注释掉的HTML实际上是由ASP.NET解释的!

<!--
<link rel="icon" href="../../favicon.ico">
-->
Matthew Lock answered 2020-08-12T09:05:16Z
0 votes

我将项目从“标准”托管移至Azure,并尝试使用url-rewrite打开页面时遇到了相同的错误。 即 规则是:

<add key="/iPod-eBook-Creator.html" value="/Product/ProductDetail?PRODUCT_UID=IPOD_EBOOK_CREATOR" />

尝试打开my_site / iPod-eBook-Creator.html并得到此错误(页面my_site / Product / ProductDetail?PRODUCT_UID = IPOD_EBOOK_CREATOR可以正常打开)。

我检查了整个站点-从未使用过..来“升级”

Oleg Sh answered 2020-08-12T09:05:45Z
0 votes

我遇到了这样的问题,尽管很难找到答案,但通过在错误消息中的错误页面上搜索“ ..”解决了答案。 我正在使用Visual Studio Express,解决方案将“ ../../Images/”更改为“〜/ Images /”。 希望这会帮助某人。

user1830924 answered 2020-08-12T09:06:06Z
0 votes

我的问题以一种非常奇怪的方式出现在我的系统上。 在我的系统中,客户创建的产品位于产品类别的目录结构中。 因此,ProductA可能位于CategoryOuter文件夹中的CategoryInner文件夹中。 我刚刚添加了一个功能,该功能可以在URL上显示嵌套的类别:

[HTTP://呜呜呜.some domain.com/product/category outer/category inner/product A.aspx]

显然,URL上的嵌套只是出于SEO的目的(并向用户显示其产品所在的类别。但是,当我在一些可以使用的URL上使用ResolveClientUrl时,它一定会被多余的伪造路径所迷惑。 错误消息在调试器中弹出,从没出现过问题,所以花了我很多时间才能弄清是怎么回事,我上网并删除了所有对不起作用的ResolveClientUrl调用 以〜开头,并将其余路径设为绝对路径。

Brett answered 2020-08-12T09:06:36Z
0 votes

我遇到了同样的问题...而我做到了。

我之前的代码:

<link rel="stylesheet" href="../css/style.default.css" type="text/css" />

我将代码更改为以下代码后,问题解决了:

<link rel="stylesheet" href="css/style.default.css" type="text/css" />

所以我认为"href=../"是不允许的,因为当我在"src=../"中使用"../"时没有问题

提前致谢

kho dir answered 2020-08-12T09:07:13Z
translate from https://stackoverflow.com:/questions/2262271/cannot-use-a-leading-to-exit-above-the-top-directory