【问题标题】:ASP.Net - Path Problems caused by Encoded URLsASP.Net - 由编码 URL 引起的路径问题
【发布时间】:2010-11-14 18:13:18
【问题描述】:

我正在建立一个网上商店,但有些网址有点问题。

我的数据库中有一个很大的部门和类别目录,我用它来形成我的主菜单。

URL 的格式为 Application/Store/Department/Category (所有商店 URL 都被重写为 store.aspx?Querystringstuff)

问题是我的代码生成的一些 url 可以正常工作,但会阻止页面的 CSS 正确加载。

特别是源文本包含斜杠的 URL。 我当然是对源文本进行 URL 编码,但我仍然遇到问题。

我的 css 链接在母版页中-

 <link rel="stylesheet" type="text/css" href="~/CSS/Layout.css" runat="server">

有效的示例链接 -

制冰机

http://localhost:1079/ABCWeb/Store/Refrigeration+Equipment/Ice+Machines.aspx

蒸盘

http://localhost:1079/ABCWeb/Store/Catering+%26+Buffet/Steam+Table+Pans.aspx

示例链接-

餐巾架/分配器

http://localhost:1079/ABCWeb/Store/Tabletop/Napkin+Holders%2fDispensers.aspx

蝾螈/奶酪熔炉

http://localhost:1079/ABCWeb/Store/Cooking+Equipment/Salamanders%2fCheesemelters.aspx

如果重要的话,这里是我构建 URL 的代码- 该数组包含路径中的项目数组 第一个元素未编码,因为它包含当前存储路径。

 private static System.Text.StringBuilder AppendAnchor(this System.Text.StringBuilder str, string[] path)
{   
    return str.Append("<a href='")
        .Append(path.Aggregate((a, b) => a + "/" + HttpUtility.UrlEncode(b))) 
        .Append(".aspx'><span>")
        .Append(HttpUtility.HtmlEncode(path[path.Length-1]))
        .Append("</span></a>");
}

感谢您的帮助!

【问题讨论】:

    标签: c# asp.net url-rewriting


    【解决方案1】:

    尝试使用相对于 Web 根目录的路径来包含样式表。在 ASP .NET 网络表单中执行此操作的一种简单方法是在服务器端控件上使用 ~,例如。

    <link rel="Stylesheet" type="text/css" href="~/Css/MyCssFile.css" runat="server" />
    

    然后,ASP.NET 应该为您解析正确的 URL,无论 URL 是什么。

    【讨论】:

    • 对不起 - 我错误地发布了我的 css 链接,它消失了。我正在使用“~”,不幸的是它并没有解决问题。
    【解决方案2】:

    好吧,我进一步研究了它——“~”实际上似乎是问题发生的地方。

    链接工作正常,但我认为服务器在生成相对路径时没有正确解析它...

    这是工作链接上生成的代码的 css 链接

    ../../CSS/Layout.css

    这是同一深度的损坏页面上的 css 链接

    ../../../CSS/Layout.css"

    这是一个非常丑陋的修复方法——但不确定是否有更好的方法

    <link rel="stylesheet" type="text/css" href="<%=Request.ApplicationPath+"/Css/Layout.css" %>" />
    

    奇怪的是,从站点地图中类似路径生成的导航链接工作正常。当它从站点地图生成路径并且不尝试构建相对路径时,它可能更好地理解完整的层次结构。

    【讨论】:

    • 这看起来很奇怪——完全看不懂!
    猜你喜欢
    • 2020-09-20
    • 2021-02-11
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    相关资源
    最近更新 更多