2013-10-10 72 views
0

我想知道這是可能的還是可能的解決方法。我想讓我的網站在IIS中運行 - 運行該網站的應用程序池將成爲可查詢AD的服務帳戶。使用應用程序池標識和運行進程的用戶

爲了得到當前的應用程序池帳戶,併成立了校長方面,我有以下:

string appPoolAccount = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
// Define Context 
PrincipalContext context = new PrincipalContext(ContextType.Domain); 

用戶現在可以從那裏自己的機器上運行的網站 - 當他們推出有瀏覽器的用戶名是啓動該過程將以'test123'爲例 - 因爲這將在那裏登錄用戶。

我需要明白的是,他們正在運行的瀏覽器,所以我可以做一些象下面這樣的用戶ID(分別爲第二個參數將是用戶的串運行,我已經找到了處理):

UserPrincipal user = UserPrincipal.FindByIdentity(context , 'test123'); 

到目前爲止,我已經試圖從獲得該用戶的字符串:

string test = Environment.UserName; //Took the App Pool Account 
WindowsIdentity wi = WindowsIdentity.GetCurrent(); // Took App Pool account 
string test = HttpContext.Current.User.Identity.Name; //bombed out as null 
+0

它是什麼樣的應用程序? ASP.NET? WCF或其他?如果你在非請求處理線程上調用HttpContext.Current.User,它就會變成null,這很正常。 –

回答

1

此代碼應該工作,但你必須在Web.Config中啓用Windows身份驗證和禁用匿名身份驗證。

if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
{ 
    string username = System.Web.HttpContext.Current.User.Identity.Name; 
} 
+0

正如我所提到的,拋出一個空例外,就好像我打斷點HttpConext.Current.User是NULL。我已禁用IIS中的動態身份驗證 - 我將仔細檢查Web配置已啓用Windows身份驗證 –

相關問題