You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET WebForms路径异常:无法用..退出顶级目录的解决问询

解决ASP.NET WebForms中AdminLTE侧边栏菜单路径“Cannot use a leading .. to exit above the top directory”异常

我来帮你搞定这个问题!这个错误本质是带runat="server"的<a>标签在解析路径时的规则和普通HTML标签不一样,你尝试的几种写法要么不符合WebForms的路径解析逻辑,要么存在语法错误,咱们一步步来解决:

正确写法(两种可行方案)

  1. 使用~根路径标记(推荐)
    你之前的第4种写法少了一个开头引号,这是语法错误,修正后的正确写法如下:

    <li>
        <a runat="server" href="~/Track/Shipment.aspx">
            <i class="fa fa-th"></i><span>Shipment</span>
        </a>
    </li>
    

    这里的~会被ASP.NET自动解析为网站的根目录,不管母版页或子页面放在哪个层级,都能精准定位到Track文件夹下的Shipment.aspx,是WebForms里最稳妥的路径写法。

  2. 使用相对母版页的路径
    如果你的母版页直接放在网站根目录下(比如MasterPage.master在根目录),也可以直接写相对路径:

    <li>
        <a runat="server" href="Track/Shipment.aspx">
            <i class="fa fa-th"></i><span>Shipment</span>
        </a>
    </li>
    

为什么你之前的写法会报错?

  • 写法1(../../Shipment.aspx):带runat="server"的标签里用../试图跳出根目录,ASP.NET有路径安全限制,不允许这种超出网站根目录的操作,所以直接抛出异常。
  • 写法2(../Track/Shipment.aspx):如果母版页在根目录,这个路径相当于往回跳一级再找Track,根本不存在对应的目录,自然无法定位页面。
  • 写法3(~/../Shipment.aspx):~已经代表根目录了,再加../就是试图跳出根目录,同样触发了ASP.NET的路径安全拦截。
  • 写法4:存在语法错误,href=~/Track/Shipment.aspx"少了开头的引号,ASP.NET无法正确解析这个路径。

额外提示

如果后续你在子目录的页面中使用这个母版页,~依然能正确解析到根目录,所以用~/开头的路径完全不用考虑页面所在的层级,通用性极强。

内容的提问来源于stack exchange,提问作者Ahmed Abd El-Hameed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:42:58