Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据请求绑定应用程序基URL?_C#_Asp.net_Http_Url_Httpcontext - Fatal编程技术网

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

C# 如何根据请求绑定应用程序基URL?,c#,asp.net,http,url,httpcontext,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

我们的应用程序中有一个严重的问题,我们像这样绑定应用程序基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”

以前,我们只在内部网(使用本地IP)中使用我们的应用程序,所以我们无法面对任何问题—所有图像都正确绑定

现在我们正在使用公共Ip通过internet访问应用程序,我们面临着这个问题

当我们使用公共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():指定要映射到物理目录的相对路径或虚拟路径。 如果路径以正斜杠(/)或反斜杠()开头,则 MapPath方法返回一个路径,就像路径是完整的虚拟路径一样。如果 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";

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

您不能使用“~”吗-谷歌应用程序相对路径,ASP.NET。我需要使用相对路径?我试过了,但还是遇到了相同的问题是的,先生,以前我们用这种方法获取基本URL,当时我们自己也遇到了相同的问题,之后我们只改变了我在问题中所说的方法,但其他图像没有任何映射,图像URL只是放在皮肤胶片中就像这样,即使我们得到了同样的问题,这些图像也