【问题标题】:Cannot use a leading .. to exit above the top directory. C#不能使用前导 .. 退出顶级目录。 C#
【发布时间】:2018-02-14 04:26:37
【问题描述】:

我已经搜索过,无法使用普遍接受的答案来解决我的问题。

在我的 Site.Master c# 页面后面的 c# 代码中,我有这段代码可以即时创建引导菜单项。

R1.Text = 
    "<li class='dropdown'>" +
        "<a runat='server' href='#' class='dropdown-toggle' data-toggle='dropdown' role='button' aria-haspopup='true' aria-expanded='false'>My Account<span class='caret'></span></a>" +
        "<ul class='dropdown-menu' >" +
                "<li><a runat='server' href='../Account/Register'>Register</a></li>" +
                "<li class='divider'></li>" +
                "<li><a runat='server' href='../Account/Login'>Login</a></li>" +
                "<li class='divider'></li>" +
                "<li><a runat='server' href='../TermsConditions'>Terms and Conditions</a></li>" +
                "<li class='divider'></li>" +
                "<li><a runat='server' href='../PrivacyPolicy'>Privacy Policy</a></li>" +
         "</ul>" +
    "</li>";

相应的 aspx 页面在创建引导导航的过程中也有这个......

<ul class="nav navbar-nav navbar-right">
    <li>
        <asp:Label ID="R1" runat="server" />
    </li>
</ul>

所以href='../TermsConditions'../PrivacyPolicy 工作正常,但href='../Account/Register'href='../Account/Login' 都给出了

不能使用前导 .. 退出顶级目录。 错误。

我尝试使用友好的网址~,这会生成一个404 error of page not found /~/Account/Register

我以为是路由权限,所以我的 RouteConfig =

public static class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        //var settings = new FriendlyUrlSettings();
        //settings.AutoRedirectMode = RedirectMode.Permanent;
        //routes.EnableFriendlyUrls(settings);

        routes.EnableFriendlyUrls();

    }
}

我有我的 /Account web.Config =

<location>
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

<location path="Manage.aspx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

那么我错过了什么?

这里是堆栈跟踪。谁能告诉我这个错误发生在哪里?

[HttpException (0x80004005): 'href' 属性的 URL 格式错误: 无法使用前导 .. 退出顶级目录..] System.Web.UI.HtmlControls.HtmlControl.PreProcessRelativeReferenceAttribute(HtmlTextWriter writer, String attribName) +188 System.Web.UI.HtmlControls.HtmlAnchor.RenderAttributes(HtmlTextWriter writer)+93 System.Web.UI.HtmlControls.HtmlControl.RenderBeginTag(HtmlTextWriter writer)+41 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +20 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器)+66 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器)+100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 C:\Users\Michael Wood\Documents\Visual Studio 2017\Projects\Thinair\Thinair\Site.Master:0 中的 ASP.site_master.__Renderform1(HtmlTextWriter __w, Control parameterContainer) System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+268 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +9856836 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)+32 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter 输出)+53 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器)+66 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器)+100 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+128 System.Web.UI.Control.RenderChildren(HtmlTextWriter 作家)+13 System.Web.UI.Control.Render(HtmlTextWriter 编写器)+12 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器)+66 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器)+100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+128 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)+13 System.Web.UI.Page.Render(HtmlTextWriter 编写器)+29 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器)+66 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器)+100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1303

【问题讨论】:

    标签: c# navigation directory


    【解决方案1】:

    您正在尝试引用站点根目录之外的内容。

    假设你有这样的文件夹结构

    C:\WWW
    ├───images
    ├───content
    └───styles
    

    假设 C:\www 是您的顶级目录,并且您在那里有一个网页。 在该网页中,您尝试引用类似的内容

     <a href='../otherpage.html'>click me</a>
    

    以上内容试图引用根目录 (C:\www) 之外的页面(位于 C:\otherpage.html),因此出现此错误

    【讨论】:

    • 不,我指的是 /Account/ 下的登录和注册页面,这些页面是在您创建新网站时通过开箱即用的用户身份验证生成的。如果我在根目录上方调用页面,我可以理解错误。我唯一能想到的是登录或注册正在调用根目录上方的页面,但我不认为是这种情况,开箱即用。
    • 你确定所有的引用/链接都不是从根开始的吗?
    • 我正在搜索“../”的整个项目,这将是一个漫长的过程,因为 bootstrap 和 jquery 有 ../ 和 ../../在他们的代码中。我认为必须有更好的方法来找到引发此错误的参考。我保留的唯一引用是 标记中使用 ../Images/image.jpg 的那些。如果您知道更好或更快的方法来查找导致此错误的原因,我会全力以赴。
    猜你喜欢
    • 2012-01-14
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2010-09-16
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多