2011-01-18 5 views
0

私はライブラリLinq to ADを使用して私のコードをテストするときに発砲される例外があります。Linq to ad、disconnectedcontext例外が発生しました

[TestMethod] 
     public void RepositoryUtenteAD_GetUser() 
     { 
      UserAD user = repositoryAD.GetUser("TestAD_OK"); 

      Assert.AreEqual("blablabla", user.DistinguishedName); 

      Assert.IsFalse(user.AccountDisabled); 
     } 

しかし、私はGETUSER呼び出す別の方法で使用することができます::これは正常に動作します

public UserAD GetUser(string username) 
     { 
      UserAD user = null; 
      using (Root = CreateDirectoryEntry()) 
      { 
       var users = new DirectorySource<UserAD>(Root, SearchScope.Subtree); 

       user = users.Where(x => x.AccountName == username) 
        .AsEnumerable() 
        .SingleOrDefault();    //not supported in LDAP; alternative in-memory SingleOrDefault 

      } 
      return user; 
     } 

私はそれを直接呼び出す:

を、私はこの機能を持つリポジトリを使用しています

[TestMethod] 
     public void RepositoryUtenteAD_AutenticazioneUtente_Authentication() 
     { 
      IAutenticazione auth = repositoryAD.AutenticazioneUtente("TestAD_OK", "TestAD_OK"); 
      Assert.IsTrue(auth.IsAuthenticated); 
     } 

となります。認証方法は次のとおりです(意味と詳細はクリアされています)そこ寧):

public IAutenticazione AutenticazioneUtente(string username, string password) 
     { 
      bool IsWhyNotAuthentifiedFound = false; 
      IAutenticazione authenticazione = new Autenticazione(); 

      UserAD user = GetUser(username); 
      return authenticazione; 
} 

テストはアサートが私に良い値を与えている、細かい実行されているが、私のテストのクリーンアップ後に私が解雇disconnectedcontext例外を持っています。私はそれが私が使用するInterop.Adsi DLLから来ると仮定します。

GetUser(ユーザー名)私が自分のUserADにあるすべてをコピーしてクローンを作成してコンテキストをクリアする必要がありますか?それとももっと賢い方法にアプローチしていますか?

読んでいただきありがとうございます!

答えて

0

奇妙な場合でも解決策を見つけました。このバグは、デバッグモードでテストを実行する場合にのみ発生します。デバッグモードではなく実行モードを選択すると、すべて正常です。

これで章が閉じます。あなたの読書をありがとう。

関連する問題