我有一个Asp .Net核心Web API,它将运行一个后台服务来每天安排一些任务并发送一些邮件。在邮件中,我需要输入api的网址。除了控制器之外,是否有其他方法可以在后台服务中获取主机URL。
答案 0 :(得分:2)
背景服务在Web请求范围之外运行,因此是 background 服务。这意味着没有可用的HTTP上下文,您可以从中获取应用程序的主机。我建议您创建一个应用程序设置,在其中为当前环境配置主机,例如appsettings.Staging.json
,appsettings.Production.json
等,并通过注入IConfiguration
或特定的选项类在后台服务中使用它们。
答案 1 :(得分:0)
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
添加到您的服务集合配置中IHttpContextAccessor
注入您需要访问其信息的类中IHttpContextAccessor.Connection.LocalIpAddress
和IHttpContextAccessor.Connection.LocalPort