如何在ASP .NET Core Web API的后台服务中获取主机URL?

时间:2019-07-08 09:58:33

标签: asp.net-core .net-core asp.net-core-webapi

我有一个Asp .Net核心Web API,它将运行一个后台服务来每天安排一些任务并发送一些邮件。在邮件中,我需要输入api的网址。除了控制器之外,是否有其他方法可以在后台服务中获取主机URL。

2 个答案:

答案 0 :(得分:2)

背景服务在Web请求范围之外运行,因此是 background 服务。这意味着没有可用的HTTP上下文,您可以从中获取应用程序的主机。我建议您创建一个应用程序设置,在其中为当前环境配置主机,例如appsettings.Staging.jsonappsettings.Production.json等,并通过注入IConfiguration或特定的选项类在后台服务中使用它们。

答案 1 :(得分:0)

  • services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();添加到您的服务集合配置中
  • IHttpContextAccessor注入您需要访问其信息的类中
  • 致电IHttpContextAccessor.Connection.LocalIpAddressIHttpContextAccessor.Connection.LocalPort