2013-04-06 94 views
0

我一直在搞這一整晚,這是非常令人沮喪的。我最終得到了網頁顯示,但由於某種原因,它不起作用,這意味着它將我拍回我的錯誤頁面,並聲明「無法驗證用戶請再試一次!」。我無法弄清楚這一點,因爲這可以在我的本地機器上完美地發現安裝了視覺工作室。Asp.net網頁與Windows身份驗證aganst活動目錄

如果有人可以抽出時間幫助解決這個問題,我一整天都在爲之奮鬥。感謝

Class.cs

public bool IsUserInSetup(string groupName, UserPrincipal user) 
    { 
     PrincipalContext context = new PrincipalContext(ContextType.Domain, "DomainName"); 
     GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName"); 

     if (user.IsMemberOf(group)) 
     { 
      return true; 
     } 
     return false; 
    } 

Authentication.aspx.cs

if (!IsPostBack) 
      { 
       if (Request.IsAuthenticated) 
       { 

        if (gv.IsUserInSetup("GroupName", user)) 
        { 
         Session["userValue"] = UserPrincipal.Current; 

         Response.Redirect("Default.aspx"); 

        } 
else 
       { 
        lblInfo.Text = "Could Not Authenticate User Please Try Again!"; 
        lblInfo.Text += "<br><b>Name: </b>" + User.Identity.Name; 
        lblInfo.Text += "<br><b>Authenticated With: </b>"; 
        lblInfo.Text += User.Identity.AuthenticationType; 
       } 

回答

0

在另一個論壇上得到答案,但我無緣無故地做了很多額外的工作。 Asp.net有一個USER.ISINROLE(「GROUPNAME」),我用它。

1

一旦可能的原因應用程序可能被部署在IIS時失敗是因爲您配置它的帳戶下運行沒有足夠的權限來訪問Active Directory服務器。默認情況下,IIS中的應用程序池在內置的ApplicationPoolIdentity帳戶下運行,該帳戶是服務器帳戶的本地帳戶。您應該轉到IIS中應用程序池的設置並選擇具有足夠特權的域帳戶。

這適用於在VS中本地運行,因爲您正在使用您的帳戶運行您的應用程序,該帳戶可能是可訪問Active Directory的域帳戶。

+0

感謝您的迴應,我創建了一個應用程序池並使用了Domain \ Admin憑據,但仍然是同一個故事。我注意到,如果我沒有啓用模擬,我得到以下錯誤?無法轉換類型爲「System.DirectoryServices.AccountManagement.GroupPrincipal」的對象以鍵入「System.DirectoryServices.AccountManagement.UserPrincipal」。 – Henry 2013-04-07 12:18:59