2016-12-14 54 views
1

下面的代碼工作,因爲它應該做的,如果服務器正在運行,如果USENAME和密碼是否正確。但是,如果我給出錯誤的用戶名或密碼,它不會給我反饋,但調用Count方法時只會遇到超時。驗證用戶使用.NET 2.4驅動程序

MongoClientSettings setts = new MongoClientSettings() 
        { 
         Server = new MongoServerAddress("127.0.0.1", 27017), 
         Credentials = new MongoCredential[] { MongoCredential.CreateCredential("TestDatabase", "username", "password") } 
        }; 
this.client = new MongoClient(setts);  
this.client.Cluster.DescriptionChanged += this.ClusterDescriptionChanged; 
var database = this.client.GetDatabase("TestDatabase"); 
var collection = database.GetCollection<BsonDocument>("SimpleCollection"); 
var count = collection.Count(MongoDB.Driver.FilterDefinition<BsonDocument>.Empty); 

我要如何從驅動程序的錯誤信息,我該如何檢查,如果它的連接,用戶或不符合密碼?

PS:從2016年1月2.0開始,驅動程序API發生了很大變化,這意味着本網站上的大多數Web教程和帖子不再適用於當前版本。

回答

0

一旦你得到了客戶端,您可以檢查是否連接成功

var server = client.GetServer(); 
server.Ping(); 

而且它始終是因爲預計包圍在嘗試捕捉與超時異常代碼是個好主意。更多這方面的信息

你可以參考MongoDB C# Driver check Authentication status & Role

+1

感謝您的答案。我的客戶端沒有GetServer() - 方法。你指的是哪個版本?您鏈接的示例不提供解決方案。提到的「auth失敗」 - 文本不是例外的一部分。現在它只是一個超時,我仍然不知道密碼是否壞或有人切斷電纜。 – Otterprinz

+0

從我的經驗蒙戈例外是沒有進化到一個較好的水平呢。確定你是否有連接的最好方法是看你是否連接到服務器。如果你有一個成功的連接,你應該能夠查詢服務器。 –

+1

'client.GetServer()'是駕駛員V.1的一部分。並已在第2版中刪除 – Sammy

相關問題