2012-02-15 2 views
2

に対して私は少しグーグルを行なったし、私は認証のActiveDirectory

System.DirectoryServices.AccountManagement.PrincipalContext pc = new System.DirectoryServices.AccountManagement.PrincipalContext(ContextType.Domain, "YOURDOMAIN") 
// validate the credentials 
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString()); 

usernameは、Windowsのログイン名として初期化され、この有望なコードaccrossに来ました。文字列でもあります。 tb.Text.ToString()はパスワードの入力に使用されているテキストボックスです

コードが更新されています。おかげで、すべての

MSDNはPrincipalContextは、usingステートメントで使用される2つの引数

+0

うーん...あなたはSystem.DirectoryServices.AccountManagementを使用して '' System.DirectoryServices.AccountManagement'アセンブリへの参照、および、適切なを追加しました。ソースコードファイルの先頭に '句? 'PrincipalContext'クラスは' TestAD'名前空間から来てはなりません。本当に..... –

+0

アセンブリを追加するのを忘れました。ありがとう! 2番目のエラーはクリアされましたが、異常なエラーが発生しました。 –

+0

そのエラー#1は、自分自身の 'TestAD'名前空間に' PrincipalContext'クラスがあり、 'System.DirectoryServices.AccountManagement'の"実際の "ものと同じコンストラクタを持っていないかもしれないことを示しています... –

答えて

5

このコードを理解してください。これは私のプロジェクトでは完全に機能しています。

public bool ValidateUser(string varDomain, string varUserName, string varPwd) 
    { 
     Boolean isValidUser; 
     using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, varDomain)) 
     { 
      isValidUser = pc.ValidateCredentials(varUserName, varPwd); 
     } 
     return isValidUser; 

    } 
3

タイプは「System.IDisposable」

に暗黙的に変換できる必要があります使用することができると言うあなたのコードを変更する必要があることを意味To:

PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

// validate the credentials 
bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString()); 

基本的に、ちょうどあなたがを使用できないことを知らせるていますPrincipalContextIDisposableというインターフェイスを実装していないため、usingステートメントではになります。 marc_sとして

EDIT 以下指摘している、あなたが使用しているPrincipalContextは正しいものではありません。あなたの名前空間に生きているようです。あなたはSystem.DirectoryServices.AccountManagementからそれを使用しているはずです。

+1

[実際には 'IDisposable'を実装しています](http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principalcontext.aspx) - 私は彼が' PrincipalContext'を再作成したと思っています自分自身のコード( 'TestAD.PrincipalContext .....')のS.DS.AM名前空間から –

+1

@marc_s問題の分析は正確に正しいように見えます。 –

+0

どうやってそれをしますか?私は必要なクラスをインポートするために上のUsingステートメントを持っています。 –

関連する問題