2012-10-31 22 views
11

Ho una singola istanza primaria di un MongoDB a cui connettersi. Sto usando il driver C# (ultima revisione) per connettere e utilizzare MongoDB.Thread client MongoDB e Multiple C#

La mia applicazione client è multi-thread in cui i processi verranno eseguiti periodicamente a intervalli diversi per produrre report. Quando è in esecuzione più di un thread e chiamo varie funzioni sul driver (ad es. Server.DatabaseExists (...)), vengono sempre rispettate eccezioni.

"Il nome richiesto è valido, ma non ci sono dati del tipo richiesto è stato trovato"

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 

Esecuzione di un thread non causa questo problema. Sono del parere che MongoDB sia sicuro per i thread, quindi sono in perdita per comprendere la causa e il rimedio.

+0

Quindi ora sto avendo lo stesso identico problema, ho escluso DNS usando un IP piuttosto che un hostname, hai fatto qualche progresso? – Stono

+1

@Stono .. L'utilizzo dell'IP ha risolto il problema? – genericuser

+1

L'errore sta accadendo al di fuori del driver MongoDB - è sul livello TCP/IP - il problema è con la risoluzione dei nomi. Questo è un errore di Windows, non un driver MongoDB o un errore del DB. Ci sono più accessi se si verifica questo errore, tutti suggeriscono che il problema è con la risoluzione hostname/host. –

risposta

1

L'unica "soluzione" che ho trovato è stata quella di riciclare il pool di applicazioni che ospita il mio sito web \ servizio chiamando il client mongo.

+0

Sto passando attraverso vecchie domande. Accettarlo come risposta dato che è l'unico. Purtroppo non uso più MongoDB e non ho mai risolto il problema da solo. – Jason