让 Hangfire 使用 MongoDB 存储

Getting Hangfire to use MongoDB Storage

我正在尝试通过 Hangfire.Mongo NuGet 包让 Hanfire 使用 MongoDB 存储。

我在 Configure() 中做了最少的必要工作:

app.UseHangfireServer();

ConfigureServices()中的这个:

services.AddHangfire(
    config => config.UseMongoStorage("mongodb://myhost:27017"),
    "MyDatabase");

我已经验证了数据库存在并且上面的连接字符串是正确的。

我得到这个异常:

Unable to clean up locks on the resource 'Migrate'. System.TimeoutException: A timeout occured after 30000ms selecting a server using

CompositeServerSelector{ Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } }. Client view of cluster state is { ClusterId : "1", ConnectionMode : "Automatic", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "Unspecified/myhost:27017" }", EndPoint: "Unspecified/myhost:27017", State: "Disconnected", Type: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException:

An exception occurred while opening a connection to the server. ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Dns.HostResolutionEndHelper(IAsyncResult asyncResult) ... at Hangfire.Mongo.DistributedLock.MongoDistributedLock.Cleanup() [Hangfire.Mongo.DistributedLock.MongoDistributedLock]

粗体 部分使我相信某些信息未设置或丢失在某处,但我没有做任何不寻常的事情。我检查了防火墙问题,并尝试了这个 中的许多想法来解决其他人的类似问题。

我也试过将连接字符串更改为所有这些

我没有在我的问题中添加的是我的应用程序是容器化的,就像我机器上的 MongoDB 一样。

我是 运行 在 Visual Studio 的容器上下文之外调试的应用程序。这意味着它看不到容器网络,因此无法连接。