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

时间:2014-09-23 09:17:58

标签: c# asp.net http url httpcontext

我们的应用程序中存在严重问题,我们正在绑定像这样的应用程序基础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;
        }
    }

我们使用Application BaseURL绑定徽标或其他图像文件,如下所示

Ex:ApplicationBaseUrl +“/ Images /”+“Logo.png”

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

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

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

所以我们只能使用我们的应用程序本地IP或公共,我们不能同时使用环境

我们无法预测,Plz任何人都可以帮助我们解决这个问题

由于

2 个答案:

答案 0 :(得分:0)

如果我正确地提出了您的问题,我认为没有必要使用所有这些行,并且每当您想要将某些内容绑定到应用程序根路径时,您将需要使用Server.MapPath()方法向其提供telda符号< strong>(〜),应该为您处理所有这些情况。

引自官方文件:

  

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

一个例子: 处理徽标路径

而不是这一行:ApplicationBaseUrl +"/Images/"+"Logo.png"

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

请告诉我这是否解决了您的问题,谢谢。

答案 1 :(得分:0)

先生,你试过这种方式吗?

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


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