如何根据请求绑定应用程序的基本URL

本文关键字:URL 应用程序 绑定 何根 请求 | 更新日期: 2023-09-27 18:23:57

我们的应用程序出现了严重问题,我们正在绑定像这样的应用程序基础url

 public static readonly string ApplicationBaseUrl = "http://" + HttpContext.Current.Request.Url.Authority + GetApplicationPath() + "/";
  public static string GetApplicationPath()
    {
        string applicationPath = "/";
        if (HttpContext.Current != null)
        {
            applicationPath = HttpContext.Current.Request.ApplicationPath;
        }
        if (applicationPath == "/")
        {
            return string.Empty;
        }
        else
        {
            return applicationPath;
        }
    }

我们正在使用应用程序BaseURL绑定徽标或其他图像文件,如下面的

例如:ApplicationBaseUrl+"/Images/"+"Logo.png"

以前我们只在Intranet中使用我们的应用程序(使用本地IP),所以我们必须面对任何问题,所有图像都正确绑定

现在我们使用公共Ip通过互联网访问应用程序,我们面临问题

当我们使用公共IP访问应用程序时的问题仍然是loco与本地IP(即http://192.168.1.93/WEBUI/Images/Logo.png)绑定,因为这个loco没有绑定,所以它显示空白。一旦我们重置IIS,然后使用公共IP请求应用程序,它就正常工作,绑定就被更改(即http://PublicIP/WEBUI/Images/Logo.png

因此,我们只能使用本地IP或公共应用程序,我们不能同时使用两种环境

我们无法预测,也许有人能帮助我们解决这个问题

感谢

如何根据请求绑定应用程序的基本URL

如果我答对了你的问题,我认为不需要所有这些行,无论何时你想将某个东西绑定到你的应用程序根路径,你都需要使用Server.MapPath()方法为它提供telda符号(~),它应该为你处理所有这些场景。

引用自官方文件:

Server.MapPath():指定要映射到物理目录的相对路径或虚拟路径。如果Path以正斜杠(/)或反斜杠()开头MapPath方法返回一个路径,就好像path是一个完整的虚拟路径一样。如果Path不是以斜杠开头,MapPath方法返回一个路径相对于正在处理的.asp文件的目录。

示例:处理徽标路径

代替此行:ApplicationBaseUrl +"/Images/"+"Logo.png"

您将使用以下内容:Server.MapPath("~/Images/Logo.png");

如果这已经解决了你的问题,请告诉我,谢谢。

先生,你试过那种方法吗?

<appSettings>
            <add key="livesite" value="http://192.168.1.93/WEBUI/"/>
 </appSettings>

 Image1.ImageUrl = System.ConfigurationManager.AppSettings["livesite"] + "Images/Logo.png";