【问题标题】:Specifying a relative path on a multiple site web server and localhost在多站点 Web 服务器和 localhost 上指定相对路径
【发布时间】:2025-12-12 23:45:02
【问题描述】:

我有一个 ASP.NET 网站,该网站发布到具有多个站点的 Web 服务器。例如:

www.example.com/SiteAwww.example.com/SiteB

此外,我还在发布之前在本地测试该网站,例如 localhost:12345

当我为图像指定路径时,例如:/Images/exampleImage.gif,这在本地运行站点时有效,因为图像文件夹位于根目录中。在这种情况下,localhost:12345/Images/exampleImage.gif 是正确的路径。

但是当发布到网络服务器时,例如到www.example.com/SiteA,相同的路径试图去www.example.com/Images/exampleImage.gif并且图像没有正确显示。

此外,这仅适用于 HTML 控件,与 ASP 控件一样,我知道我可以使用波浪号 (~/Images/exampleImage.gif),它会知道查看站点的根目录,即 www.example.com/SiteA/Images/exampleImage.gif

就我而言,强烈建议使用 HTML 控件。

编辑:这是因为我有 JavaScript 可以根据 div 是否隐藏来更改 html img 控件的图像:

function Toggle(commId, imageId) {
    var div = document.getElementById(commId);
    var img = document.getElementById(imageId);
    if (div.style.display == 'none') {
        div.style.display = 'inline';
        img.src = "/Images/minus.gif";
    } else {
        div.style.display = 'none';
        img.src = "/Images/plus.gif";
    }
}

当服务器上的每个站点都有文件夹并且仍在本地主机上工作时,我如何获取相对于站点根目录的图像文件夹的路径?

【问题讨论】:

    标签: javascript html asp.net path


    【解决方案1】:

    您必须使用代码来执行 ~/ 或在包含图像的服务器上发布一个名为“/Images”的新虚拟目录。

    【讨论】:

      【解决方案2】:

      我不知道您可以将嵌入式 C# 代码放入 JavaScript 中,但只是这样做就知道了:

      function Toggle(commId, imageId) {
          var div = document.getElementById(commId);
          var img = document.getElementById(imageId);
          if (div.style.display == 'none') {
              div.style.display = 'inline';
              img.src = "<%= ResolveUrl("~/Images/minus.gif") %>";
          } else {
              div.style.display = 'none';
              img.src = "<%= ResolveUrl("~/Images/plus.gif") %>";
          }
      }
      

      因为ResolveUrl 方法可以使用波浪号(~)作为路径值,并且知道服务器的网站根目录。

      您还可以直接在 img html 控件(和其他属性/控件)的 src 属性中使用具有相同 ResolveUrl 方法的嵌入代码,以防万一有人遇到同样的问题,但只使用 HTML控制。

      【讨论】:

        最近更新 更多