【问题标题】:Dockerized Asp.net core 2.1 - Hangfire not startingDockerized Asp.net core 2.1 - Hangfire 没有启动
【发布时间】:2026-01-19 22:50:01
【问题描述】:

情况: 将 Hangfire 与 Asp.net core 2.1 和 Docker 一起使用。

  • 应用程序在 docker 运行时崩溃。当我评论所有与 Hangfire,应用运行良好。

  • 如果我在 Visual Studio 上通过 IIS express 运行应用程序,应用程序工作正常
    使用 Hangfire。

问题:

Application startup exception: System.Exception: Cannot connect to SQL Server Browser. Ensure SQL Server Browser has been started. ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address
\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\


    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   at Hangfire.HangfireApplicationBuilderExtensions.ThrowIfNotConfigured(IApplicationBuilder app)
   at Hangfire.HangfireApplicationBuilderExtensions.UseHangfireServer(IApplicationBuilder app, BackgroundJobServerOptions options, IEnumerable`1 additionalProcesses, JobStorage storage)

error on docker run

appsettings.json 上的连接字符串:

"ConnectionStrings": {
"TestDB": "Server=[server_instance]\\LOCALHOST;database=[db1];uid=[user];pwd=[pwd]",
"HangfireDB": "Server=[server_instance]\\LOCALHOST;database=Hangfire;uid=[user];pwd=[pwd]"
  },

知道为什么会这样吗? 谢谢

【问题讨论】:

  • 您是否在与应用程序相同的容器中运行数据库?如果不是,则应用程序必须属于同一网络才能相互通信,如果您的数据库也是 dockerized。请注意,默认情况下,您无法从 docker guest 连接到 docker 主机(如果您的数据库在 docker 主机上运行)。请提供有关您的设置的更多信息
  • @Tseng,是的,你是对的。我的数据库在 docker 主机上运行。这就是为什么它不起作用。有什么办法可以访问数据库吗?假设在生产 AWS 上,我的应用程序在 ECS 容器上运行,而我的数据库在 EC2 上,ECS 实例将如何连接到 EC2?
  • 不建议 docker 容器直接连接到主机(尽管可以通过将“主机”网络添加到容器来启用它。如果您的数据库在主机之外,并且通常可以通过公共(或内部IP)应该没问题。因此,如果您的数据库直接托管在AWS中,那么您应该使用它的IP和连接字符串进行连接。对于本地开发,您应该将您的数据库放在一个容器中并将两个容器放入同一个网络(即使用 docker compose 或类似的)
  • @Tseng,非常感谢朋友。

标签: docker asp.net-core hangfire asp.net-core-2.1


【解决方案1】:

将连接字符串中的服务器值从 LOCALHOST 更改为您的 ip

【讨论】: