2014-02-11 127 views
0

我正在爲WPF應用程序開發業務邏輯。在應用程序啓動之前,我必須證明CurrentUser是否在特定域的ActiveDirectory中,如果他在那裏,我必須找出當前用戶在哪個角色中。目前的用戶和他在AD的存在工作正常,但我有問題找出角色。如何獲取當前用戶的所有角色?

我已經嘗試過:

using System.Web.Security; 

Roles.GetRolesForUser(currentuser); 

但問題是,我必須使角色的管理,所以我上面的代碼中寫道:

Roles.Enabled = true; 

但仍有與它的問題 - >System.InvalidOperationException;

這裏是整個代碼(評測):

string currentuser = Environment.UserName; 
string currentmachine = Environment.MachineName; 

if (DirectoryEntry.Exists(string.Format("WinNT://{0}/{1}", currentmachine, currentuser))) 
{ 
    Console.WriteLine("it's working\n"); 


    Roles.Enabled = true; 
    Console.WriteLine(Roles.GetRolesForUser(currentuser)); 
} 
else 
{ 
    Console.WriteLine("it's not working"); 
} 

這是使用指令的問題嗎?或者還有其他可能性來檢查用戶是哪個角色?

非常感謝。如果您還使用成員

var user = Membership.GetUser("WhateverUsername"); 
string [] roles = Roles.GetRolesForUser(user.UserName); 

如果沒有,那麼只需指定用戶名

回答

0

也許這可以幫助你:Active Directory - Roles of a user

在這篇文章中使用System.DirectoryServices.AccountManagement命名空間。 我認爲這是WPF應用程序和Roles.GetRolesForUser似乎用於ASP-Web應用程序的更好方法。

我希望這可以幫助你。

+0

我使用這個指令:'using System.DirectoryServices.AccountManagement; using System.DirectoryServices.ActiveDirectory; using System.DirectoryServices.Protocols; 使用System.DirectoryServices;' –

+0

謝謝 - 必須嘗試一些與域的事情,但現在它工作正常。 –

0

試試這個:

string [] roles = Roles.GetRolesForUser("WhateverUsename"); 

這將讓你提供的用戶名的角色。希望能幫助到你。

+0

'System.InvalidOperationException'仍然存在問題;' –

+0

Exception說:'此方法只能在初始化階段才能在調用開始之前調用。「 –

+0

嘗試將這些添加到配置文件的appSettings區域中 Dumisani

相關問題