【问题标题】:Handling URLs correctly -- production vs development (ASP.NET)正确处理 URL——生产与开发 (ASP.NET)
【发布时间】:2011-03-04 15:48:09
【问题描述】:

我的生产环境位于主 url www.example.com/sample 之外的目录中。我的大多数 URL 都使用 ~ 解析得很好,所以 ~/default.aspx 解析为 www.example.com/sample/default.aspx

但是,我的 css javascript 都没有在生产中正确加载。例如,我将脚本 src 设置为js/sample.js,并且我尝试了~/js/sample.js,但它无法解决。我在<script> 标签中尝试了runat="server",但有时会出错。我有:

<script runat="server" src="~/js/sample.js?<%=   MyCode.VersionInfo.JSTag %>" type="text/javascript"></script>

在这里,我将版本代码标记到文件名的末尾以在调试期间强制重新加载,但是,runat=server 会抱怨这一点。

我确定这是一个常见问题,并且有一个处理它的标准习语,但我似乎找不到它。有人能帮我吗? ~ 何时以及如何扩展,人们如何处理这类事情?

很可能当网站完全投入生产时,它会在没有子目录的情况下进入,所以我需要系统地处理这个问题。

【问题讨论】:

  • 我想出的唯一解决方案是使用其他人建议的ResolveUrl 构造。我发现这种情况非常令人沮丧,因为它简直丑陋:-(

标签: c# asp.net url


【解决方案1】:

您正在寻找的是:

<script type="text/javascript" src="<%= this.ResolveUrl("~/js/sample.js?" + MyCode.VersionInfo.JSTag) %>"></script>

更多信息here

【讨论】:

    【解决方案2】:

    只需对 js、css 和图像使用相对路径,即 js/sample.js

    【讨论】:

    • -,哇! ~ 的主要好处是,asp.net 引擎进行相对计算……这绝对不是正确的方法!
    【解决方案3】:

    这是一个建议:

    <script type="text/javascript" src="<% =HttpRuntime.AppDomainAppVirtualPath & "/js/sample.js"%>"></script>
    

    此外,如果您想早点发现此类路径问题,您可以将 Web 应用程序设置为在 Cassini(内置网络服务器)下的虚拟目录下运行。

    右键单击 Web 项目,选择属性,选择 Web,然后输入您的虚拟路径 - 例如/样本/。

    【讨论】:

      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2021-09-01
      • 2012-05-21
      • 2011-10-16
      相关资源
      最近更新 更多