2012-10-31 70 views
11

我有一个要连接的MongoDB的主要实例。我正在使用C#驱动程序(最新版本)来连接和使用MongoDB。MongoDB和多个C#客户端线程

我的客户端应用程序是多线程的,因此进程将以不同的时间间隔定期运行以生成报告。当多个线程正在运行,并且我调用驱动程序上的各种函数(例如server.DatabaseExists(...))时,我始终遇到一个异常。

“请求的名称是有效的,但没有请求类型的数据发现”

at System.Net.Dns.GetAddrInfo(String name) 
    at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 
    at System.Net.Dns.GetHostAddresses(String hostNameOrAddress) 
    at MongoDB.Driver.MongoServerAddress.ToIPEndPoint(AddressFamily addressFamily) in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoServerAddress.cs:line 195 
    at MongoDB.Driver.MongoServerInstance.GetIPEndPoint() in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoServerInstance.cs:line 339 
    at MongoDB.Driver.Internal.MongoConnection.Open() in C:\work\rstam\mongo-csharp-driver\Driver\Internal\MongoConnection.cs:line 368 
    at MongoDB.Driver.Internal.MongoConnection.GetNetworkStream() in C:\work\rstam\mongo-csharp-driver\Driver\Internal\MongoConnection.cs:line 574 
    at MongoDB.Driver.Internal.MongoConnection.SendMessage(MongoRequestMessage message, SafeMode safeMode, String databaseName) in C:\work\rstam\mongo-csharp-driver\Driver\Internal\MongoConnection.cs:line 555 
    at MongoDB.Driver.MongoCursorEnumerator`1.GetReply(MongoConnection connection, MongoRequestMessage message) in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs:line 295 
    at MongoDB.Driver.MongoCursorEnumerator`1.GetFirst() in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs:line 253 
    at MongoDB.Driver.MongoCursorEnumerator`1.MoveNext() in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoCursorEnumerator.cs:line 141 
    at MongoDB.Driver.MongoDatabase.GetCollectionNames() in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoDatabase.cs:line 645 
    at MongoDB.Driver.MongoDatabase.CollectionExists(String collectionName) in C:\work\rstam\mongo-csharp-driver\Driver\Core\MongoDatabase.cs:line 297 

运行一个线程不会导致此问题。我的理解是MongoDB是线程安全的,所以我不知道原因和补救措施。

+0

所以我现在有这个完全相同的问题,我已经通过使用ip而不是主机名排除了DNS,您是否取得了进展? – Stono

+1

@Stono ..使用IP解决了你的问题吗? – genericuser

+1

错误发生在MongoDB驱动之外 - 它在TCP/IP层上 - 问题在于名称解析。这是Windows错误,而不是MongoDB驱动程序或数据库错误。如果你在谷歌这个错误,有多个点击,所有这些表明问题与主机名/主机解析。 –

回答

1

我发现的唯一“解决方案”是回收托管我的网站\服务的应用程序池,调用mongo客户端。

+0

我正在经历老问题。接受这个作为答案,因为它是唯一的答案。不幸的是,我不再使用MongoDB,我从来没有解决过这个问题。 – Jason