2012-02-15 95 views
0

我知道我的帳戶用戶名和密碼。我可以登錄到域上的任何PC。C#ActiveDirectory保持返回false。爲什麼?

Console.WriteLine("User Name: " + userName + " Password: " + tb.Text.ToString().Trim()); 
System.DirectoryServices.AccountManagement.PrincipalContext pc = new System.DirectoryServices.AccountManagement.PrincipalContext(ContextType.Domain, "DOMAIN.TLD");     

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

該方法一直返回false。

我在這裏做錯了什麼?我也知道我的密碼是什麼。任何幫助都會很棒!

tb - > TextBox輸入密碼的地方。我刪除所有的空格和修剪它(如果用戶砸了)

+0

在這裏(和在互聯網上的其他地方)有相當多的其他問題處理'PrincipalContext.ValidateCredentials'意外返回false。你看過那些嗎? – 2012-02-15 16:51:14

回答

1

你可以試試這個:

bool validatedOnDomain = pc.ValidateCredentials(userName, tb.Text.ToString().Trim(), ContextOptions.Negotiate); 

你只需要Specifie被用於綁定到服務器的選項。

+0

我做到了這一點,仍然是同樣的問題。 – 2012-02-16 17:08:06

+1

你是否玩過不同的上下文選項? – JPBlanc 2012-02-16 17:42:25

+0

是的,但他們都有類似的結果。出於某種原因,我嘗試了原始代碼,結果如此。所以真正的問題是,當它應該是真實的時候,我會變得虛假。 – 2012-02-16 17:55:35