C# .NET Core 3.0 IHostedService访问web服务器URL-方案、主机、端口等
我的问题很简单。我想访问IHostedService中的服务器URL 我找不到做这件事的方法。那里没有任何请求,因此我无法使用IHttpContextAccessor IServer features属性没有任何地址,并且我没有选项 我不想在配置中硬编码服务器的URLC# .NET Core 3.0 IHostedService访问web服务器URL-方案、主机、端口等,c#,.net,asp.net-core,.net-core,kestrel-http-server,C#,.net,Asp.net Core,.net Core,Kestrel Http Server,我的问题很简单。我想访问IHostedService中的服务器URL 我找不到做这件事的方法。那里没有任何请求,因此我无法使用IHttpContextAccessor IServer features属性没有任何地址,并且我没有选项 我不想在配置中硬编码服务器的URL 我正在运行的.NET core版本是3.0。您可以在Startup.cs中的依赖项注入框架中注册托管服务: 您可以在Startup.cs中的依赖项注入框架中注册托管服务: 在完全启动服务器之前,无法从服务器获取地址/url 如果需
我正在运行的.NET core版本是3.0。您可以在Startup.cs中的依赖项注入框架中注册托管服务:
您可以在Startup.cs中的依赖项注入框架中注册托管服务:
在完全启动服务器之前,无法从服务器获取地址/url 如果需要本地主机地址,请通过编程或其他方式从./Properties/launchSettings.json中查找
如果在实时环境中需要地址,则必须等待服务器加载。在完全启动服务器之前,无法从服务器获取地址/url 如果需要本地主机地址,请通过编程或其他方式从./Properties/launchSettings.json中查找
如果您在实时环境中需要地址,则必须等待服务器加载。对于Asp.Net Core 3.1,您无法从IHostedService中的iServerAddresssFeature获取地址,因为IHostedService是在服务器启动之前启动的。看这个 改变的是IHostedService的调用顺序。这在3.0中被提升,但在配置之后仍然运行 要在iHostedService中获取地址,可以在启动后运行它们。我发现其中一种方法是在Program.cs中注册服务,请详细查看 公共课程 { 公共静态无效字符串[]args =>CreateHostBuilderargs.Build.Run; 公共静态IHostBuilder CreateHostBuilderstring[]args=> Host.CreateDefaultBuilderargs .ConfigureWebHostDefaultswebBuilder=>//在此处注册GenericWebHostSevice { webBuilder.UseStartup; } //在配置WebHostDefaults后注册HostedService .配置服务 services=>services.AddHostedService; }
对于Asp.Net Core 3.1,您无法从IHostedService中的iServerAddresssFeature获取地址,因为IHostedService是在服务器启动之前启动的。看这个 改变的是IHostedService的调用顺序。这在3.0中被提升,但在配置之后仍然运行 要在iHostedService中获取地址,可以在启动后运行它们。我发现其中一种方法是在Program.cs中注册服务,请详细查看 公共课程 { 公共静态无效字符串[]args =>CreateHostBuilderargs.Build.Run; 公共静态IHostBuilder CreateHostBuilderstring[]args=> Host.CreateDefaultBuilderargs .ConfigureWebHostDefaultswebBuilder=>//在此处注册GenericWebHostSevice { webBuilder.UseStartup; } //在配置WebHostDefaults后注册HostedService .配置服务 services=>services.AddHostedService; }
我的意思是,你可以将IHttpContextAccessor注入到你的类中。。。如果您能提供更多关于何时何地需要这些信息的上下文,我想我们可以更好地帮助您。我需要在IHostedService中提供这些信息,它将在应用程序启动后立即执行。IHttpContextAccessor需要一个请求,可以在控制器中使用。但在IHostedService中,我没有长话短说的要求,你不能。看,没有别的办法吗?一种不使用HttpContext的方法?我的意思是,您可以将IHttpContextAccessor注入到您的类中。。。如果您能提供更多关于何时何地需要这些信息的上下文,我想我们可以更好地帮助您。我需要在IHostedService中提供这些信息,它将在应用程序启动后立即执行。IHttpContextAccessor需要一个请求,可以在控制器中使用。但在IHostedService中,我没有长话短说的要求,你不能。看,没有别的办法吗?不使用HttpContext的方法?至少在本地运行IIS Express的默认web server builder的Asp.Net Core 3.1的iServerAddress功能中没有地址,即使使用lauchSettings.json和IIS Express配置文件,在本地运行IIS Express的默认web server builder的Asp.Net Core 3.1的iServerAddress功能中也没有地址,至少,即使使用lauchSettings.json和IIS Express配置文件
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHostedService, MyHostedService>();
}
public class MyHostedService : IHostedService
{
private readonly IServer _server;
public MyHostedService(IServer server)
{
_server = server;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
var features = _server.Features;
var addresses = features.Get<IServerAddressesFeature>();
var address = addresses.Addresses.FirstOrDefault(); // = http://localhost:5000
}
}