Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 获取ASP.NET核心托管服务内应用程序的基本URL_Asp.net Core - Fatal编程技术网

Asp.net core 获取ASP.NET核心托管服务内应用程序的基本URL

Asp.net core 获取ASP.NET核心托管服务内应用程序的基本URL,asp.net-core,Asp.net Core,我需要在一个HostedService中获取ASP.NET核心应用程序的基本URL 我之所以需要它,是因为它向托管它的同一个ASP.NET核心应用程序发出请求(目的是预热,以提高用户的第一次调用性能) 目前,我的解决方案是将基本URL保留在配置文件中,或者仅保留在托管服务私有变量中 但我认为,有一种方法可以从启动代码中获取它,但我不知道它隐藏在哪里 有人知道如何获得它吗 还有一些解决方案可以从请求信息中获取,但是HostedService是在任何请求完成之前启动的。所以它不适合这种情况。我找到

我需要在一个HostedService中获取ASP.NET核心应用程序的基本URL

我之所以需要它,是因为它向托管它的同一个ASP.NET核心应用程序发出请求(目的是预热,以提高用户的第一次调用性能)

目前,我的解决方案是将基本URL保留在配置文件中,或者仅保留在托管服务私有变量中

但我认为,有一种方法可以从启动代码中获取它,但我不知道它隐藏在哪里

有人知道如何获得它吗


还有一些解决方案可以从请求信息中获取,但是HostedService是在任何请求完成之前启动的。所以它不适合这种情况。

我找到了如何获取应用程序的地址

public void Configure(IApplicationBuilder application)
{
    var addresses = application.ServerFeatures.Get<IServerAddressesFeature>().Addresses;
}

顺便说一下,我停止使用此功能,因为如果使用IIS集成,无论如何都不能使用此地址。中间件检查请求必须包含IIS生成的令牌,并随每个服务请求一起提供。中间件拒绝您自己的请求。
 public static void Main(string[] args)
 {
            var builder = CreateWebHostBuilder(args);
            var webHost = builder.Build();
            var addresses = webHost.ServerFeatures.Get<IServerAddressesFeature>().Addresses;
            var address = addresses.FirstOrDefault();
            AppDomain.CurrentDomain.SetData("BaseUrl", address?? "");
            webHost.Run();
  }
string baseUrl = AppDomain.CurrentDomain.GetData("BaseUrl").ToString();