C# Can';无法从IIS读取active directory用户,但可以在调试模式下读取

C# Can';无法从IIS读取active directory用户,但可以在调试模式下读取,c#,asp.net,ldap,iis-6,C#,Asp.net,Ldap,Iis 6,我在LDAP与Asp.net IIS应用程序之间存在问题。 我正在从Active directory读取用户,如下所示 public class ActiveDirectoryRepository : IActiveDirectoryRepository { #region Public methods List<User> IActiveDirectoryRepository.GetActiveDirectoryUsers(string l

我在LDAP与Asp.net IIS应用程序之间存在问题。 我正在从Active directory读取用户,如下所示

public class ActiveDirectoryRepository : IActiveDirectoryRepository
    {
        #region Public methods

        List<User> IActiveDirectoryRepository.GetActiveDirectoryUsers(string loginName)
        {
            List<User> activeDirectoryUsersList = new List<User>();
            try
            {
                string activeDirectory = System.Configuration.ConfigurationManager.AppSettings["EDPUserDomain"];
                var searchRoot = new DirectoryEntry(activeDirectory);
                var search = new DirectorySearcher(searchRoot);

                FormUserSearchFilter(loginName, search);

                SearchResultCollection activeDirectoryUsers = search.FindAll();

                if (activeDirectoryUsers != null)
                {
                    for (int counter = 0; counter < activeDirectoryUsers.Count; counter++)
                    {
                        string userNameEmailString = string.Empty;
                        SearchResult result = activeDirectoryUsers[counter];

                        if (result != null && result.Properties.Contains("displayname"))
                        {
                            User activeDirectoryUser = new User();

                            if (result.Properties["givenname"].Count > 0)
                            {
                                activeDirectoryUser.FirstName = Convert.ToString(result.Properties["givenname"][0], CultureInfo.InvariantCulture);
                            }

                            if (result.Properties["sn"].Count > 0)
                            {
                                activeDirectoryUser.LastName = Convert.ToString(result.Properties["sn"][0], CultureInfo.InvariantCulture);
                            }

                            if (result.Properties["mail"].Count > 0)
                            {
                                activeDirectoryUser.email = Convert.ToString(result.Properties["mail"][0], CultureInfo.InvariantCulture);
                            }

                            if (result.Properties["distinguishedname"].Count > 0)
                            {
                                string[] domain = Convert.ToString(result.Properties["distinguishedname"][0], CultureInfo.InvariantCulture).Split(',');

                                if (domain[2] != null)
                                {
                                    activeDirectoryUser.DomainName = domain[2].Replace("DC=", String.Empty);
                                }
                            }

                            if (result.Properties["samaccountname"].Count > 0)
                            {
                                activeDirectoryUser.UserName = Convert.ToString(result.Properties["samaccountname"][0], CultureInfo.InvariantCulture);
                            }

                            activeDirectoryUsersList.Add(activeDirectoryUser);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string filePath = @"C:\Mails\Error.txt";

                using (StreamWriter writer = new StreamWriter(filePath, true))
                {
                    writer.WriteLine("Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace +
                       "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
                    writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
                }
            }

            return activeDirectoryUsersList;
        }
公共类ActiveDirectoryRepository:IActiveDirectoryRepository
{
#区域公共方法
列表IActiveDirectoryRepository.GetActiveDirectoryUsers(字符串登录名)
{
List activeDirectoryUsersList=新列表();
尝试
{
字符串activeDirectory=System.Configuration.ConfigurationManager.AppSettings[“EDPUserDomain”];
var searchRoot=新目录条目(activeDirectory);
var search=newdirectorysearcher(searchRoot);
FormUserSearchFilter(登录名,搜索);
SearchResultCollection activeDirectoryUsers=search.FindAll();
if(activeDirectoryUsers!=null)
{
对于(int counter=0;counter0)
{
activeDirectoryUser.FirstName=Convert.ToString(result.Properties[“givenname”][0],CultureInfo.InvariantCulture);
}
如果(结果属性[“序列号”]。计数>0)
{
activeDirectoryUser.LastName=Convert.ToString(result.Properties[“sn”][0],CultureInfo.InvariantCulture);
}
if(result.Properties[“mail”].Count>0)
{
activeDirectoryUser.email=Convert.ToString(result.Properties[“mail”][0],CultureInfo.InvariantCulture);
}
if(result.Properties[“differentiedName”].Count>0)
{
string[]domain=Convert.ToString(result.Properties[“differentiedName”][0],CultureInfo.InvariantCulture).Split(',');
如果(域[2]!=null)
{
activeDirectoryUser.DomainName=域[2]。替换(“DC=,String.Empty”);
}
}
if(result.Properties[“samaccountname”].Count>0)
{
activeDirectoryUser.UserName=Convert.ToString(结果.Properties[“samaccountname”][0],CultureInfo.InvariantCulture);
}
activeDirectoryUsersList.Add(activeDirectoryUser);
}
}
}
}
捕获(例外情况除外)
{
字符串文件路径=@“C:\Mails\Error.txt”;
使用(StreamWriter writer=newstreamwriter(filePath,true))
{
writer.WriteLine(“消息:+ex.Message+”
“+Environment.NewLine+”StackTrace:+ex.StackTrace+ “+Environment.NewLine+”日期:“+DateTime.Now.ToString()); writer.WriteLine(Environment.NewLine+“-----------------------------------------------------------------------------------------”+Environment.NewLine); } } 返回activeDirectoryUsersList; }
上面的代码在调试模式下运行良好,但在IIS 6.1中部署应用程序后会抛出以下错误

Message :An operations error occurred.
<br/>
StackTrace :   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
   at System.DirectoryServices.DirectorySearcher.FindAll()
   at PW.EPD.DataAccess.Repository.ActiveDirectoryRepository.PW.EPD.DataAccess.Repository.IActiveDirectoryRepository.GetActiveDirectoryUsers(String loginName)
Date :5/20/2015 11:50:30 PM

-----------------------------------------------------------------------------
消息:发生操作错误。

StackTrace:at System.DirectoryServices.DirectoryEntry.Bind(布尔throwIfFail) 位于System.DirectoryServices.DirectoryEntry.Bind()处 在System.DirectoryServices.DirectoryEntry.get_AdsObject()中 位于System.DirectoryServices.DirectorySearcher.FindAll(布尔findMoreThanOne) 在System.DirectoryServices.DirectorySearcher.FindAll()中 位于PW.EPD.DataAccess.Repository.ActiveDirectoryRepository.PW.EPD.DataAccess.Repository.IActiveDirectoryRepository.GetActiveDirectoryUsers(字符串登录名) 日期:2015年5月20日晚上11:50:30 -----------------------------------------------------------------------------
请帮帮我。 提前谢谢