不能使用前导../来退出顶层目录
我有一个asp.net的网站,我们有pipe理员只有pipe理员的login页面的所有网站是允许所有 – 我需要问如何定义正确的安全configuration,因为我得到这个错误
不能使用前导..从顶端目录之上退出。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。 exception详细信息:System.Web.HttpException:不能使用前导..以退出顶部目录。 源错误: 在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。 堆栈跟踪: [HttpException(0x80004005):不能使用前导..以退出顶部目录。] System.Web.Util.UrlPath.ReduceVirtualPath(String path)+8862087 System.Web.Util.UrlPath.Reduce(String path)+52 System.Web.Util.UrlPath.Combine(stringappPath,stringbasepath,string相对)+214 System.Web.UI.Control.ResolveClientUrl(String relativeUrl)+180 System.Web.UI.WebControls.Image.AddAttributesToRender(HtmlTextWriter作家)+68 System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter作家)+20 System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter作家)+20 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter适配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter适配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter作家,ICollection的孩子)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter作家)+19 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter作家)+163 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter作家)+32 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter输出)+51 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter适配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter适配器)+99 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter作家)+40 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter作家,ICollection的孩子)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter作家)+19 System.Web.UI.Control.Render(HtmlTextWriter作家)+10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter适配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter适配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter作家,ICollection的孩子)+134 System.Web.UI.Control.RenderChildren(HtmlTextWriter作家)+19 System.Web.UI.Page.Render(HtmlTextWriter作家)+29 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter作家,ControlAdapter适配器)+27 System.Web.UI.Control.RenderControl(HtmlTextWriter作家,ControlAdapter适配器)+99 System.Web.UI.Control.RenderControl(HtmlTextWriter作家)+25 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+1266
我的configuration文件:
<authentication mode="Forms"> <forms name=".ASPXFORMSAUTH" protection="All" loginUrl="Admin/LoginPage.aspx" path="/" enableCrossAppRedirects="true"> </forms> </authentication> <authorization> <deny users="*" /> </authorization>
这意味着你的网页是指从你的页面上的文件夹中的内容,但是你的页面已经在网站的根文件夹中,所以相对path是无效的。 根据您的exception消息来看,它看起来像是一个图像控制器造成的问题。
你必须有这样的东西:
<asp:Image ImageUrl="..\foo.jpg" />
但是由于页面本身位于网站的根文件夹中,所以不能引用上一层的内容,这就是领导..\
正在做的事情。
您可以使用~/img/myImage.png
而不是../img/myImage.png
来避免ASP.NET页面出现此错误。
你有一个图像或favicon链接的style ="../"
地方,如果“../”是有效的,将超越网站的顶部,如下所示:
图片:
http://example.com/Images/test.jpg
页
http://example.com/Pages/test.aspx
在该页../Images/test.jpg
有效: ../Images/test.jpg
会抛出一个错误: ../../Images/test.jpg
这意味着其中一个path在其开始处有一个“..”,这将导致退出网站的根文件夹层次结构。 你需要谷歌“asp.net相对path”或类似的东西来帮助你解决你的问题。
顺便说一句,问题的提示包含在你看到的例外页面。 它实际上会告诉你什么文件发现了问题。
为了避免将来发生此exception,请在整个解决scheme中search此string:“../”。 如果您在网站的根path中find任何文件,请解决它们。
我将项目从“标准”托pipe移到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可以打开没有任何问题)。
我检查完整的网站 – 从来没有使用..“升级”
我有这样一个问题,答案虽然令人沮丧,但通过在错误信息中的“..”的有问题的页面上search来解决。 我正在使用Visual Studio Express,解决scheme将“../../Images/”更改为“〜/ Images /”。 希望这会帮助某人。
我以非常奇怪的方式在系统上发生了问题。 在我的系统中,客户创build的产品位于产品类别的目录结构中。 因此,ProductA可能位于文件夹CategoryOuter内的文件夹CategoryInner中。 我刚刚添加了一个function,我的URL将显示URL上的类别嵌套:
http://www.somedomain.com/product/CategoryOuter/CategoryInner/ProductA.aspx
显然,在URL上的嵌套仅仅是为了SEO的目的(并向用户显示他们的产品所属的类别。但是当我在一些曾经工作的URL上使用ResolveClientUrl时,它一定被额外的假path所困惑。这个错误消息在debugging器中popup,这根本不是问题,所以我花了相当长的时间来弄清楚发生了什么。我通过并删除了所有的ResolveClientUrl调用,从〜开始,并将path的其余部分作为绝对path。
在我的情况下,原来在主页面上被注释掉了HTML!
谁知道这样的HTML注释掉,实际上是由ASP.NET解释的!
<!-- <link rel="icon" href="../../favicon.ico"> -->