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