如何根据请求绑定应用程序的基本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或公共应用程序,我们不能同时使用两种环境
我们无法预测,也许有人能帮助我们解决这个问题
感谢
如果我答对了你的问题,我认为不需要所有这些行,无论何时你想将某个东西绑定到你的应用程序根路径,你都需要使用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";