2016-04-17 19 views
1

私はこれをデバッグしようと何時間も掛かっていますが、運はありません。私はC#ドライバでMongo 3.2を使用しています。私は問題をまだ表示している単純化されたバージョンに問題を縮小しました。Asp.net MongoDB ToListAsync()返さない

ToListAsync()が返さないという問題があるようです。 LoginHelper関数を同期に変更してToListAsync()の値をチェックしようとしましたが、結果が正しいかどうかを確認するための結果が表示されます。なぜこの非同期バージョンがうまくいかないのか分かりません。ここで

コードです:

public partial class Login : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) {} 

    [System.Web.Services.WebMethod] 
    public static async Task<string> LoginUser(string username, string password) 
    { 
     string userId = await LoginHelper(username, password); 

     if (userId != "N/A") 
     { 
      //Do some stuff here 
     } 

     return userId; 
    } 

    public static async Task<string> LoginHelper(string userName, string password) 
    { 
     var client = new MongoClient("mongodb://localhost"); 
     var database = client.GetDatabase(_databaseName); 

     var collection = database.GetCollection<BsonDocument>("Users"); 

     //This is the trouble line 
     //If I remove this line the code will run fine and I'll see "N/A" returned in the JavaScript that calls LoginUser WebMethod 
     var documents = await collection.Find(new BsonDocument()).ToListAsync(); 

     //The code never reaches this point, the above await never returns 
     return "N/A"; 
    } 
} 
+0

代わりにFindAsyncを使用しないのはなぜですか? –

答えて

0

私は単にWCF Webサービスに機能を移動する代わりに、Webメソッドを使用して問題を解決してきました。私はなぜこれが動作するかわからない、たぶんASPXページのWebメソッドは非同期と互換性がありません。

関連する問題