让 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://myhost:27017/MyDatabase
- mongodb://myhost:27017/?connect=replicaSet
- mongodb://myhost:27017/MyDatabase/?connect=replicaSet
我没有在我的问题中添加的是我的应用程序是容器化的,就像我机器上的 MongoDB 一样。
我是 运行 在 Visual Studio 的容器上下文之外调试的应用程序。这意味着它看不到容器网络,因此无法连接。
我正在尝试通过 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://myhost:27017/MyDatabase
- mongodb://myhost:27017/?connect=replicaSet
- mongodb://myhost:27017/MyDatabase/?connect=replicaSet
我没有在我的问题中添加的是我的应用程序是容器化的,就像我机器上的 MongoDB 一样。
我是 运行 在 Visual Studio 的容器上下文之外调试的应用程序。这意味着它看不到容器网络,因此无法连接。