私はライブラリ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にあるすべてをコピーしてクローンを作成してコンテキストをクリアする必要がありますか?それとももっと賢い方法にアプローチしていますか?
読んでいただきありがとうございます!