高分求LDAP访问Active Derictory问题的解决方案,请大虾们指教。(急急急急急急急急急急……)

时间:2021-02-07 17:15:06
我现在的项目采用的是LDAP进行身份验证的问题,代码应当没有什么错误。生成的WebService服务在调用时总是出现下面的错误:

System.Runtime.InteropServices.COMException (0x8007203A): 该服务器不可操作。
   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_IsContainer()
   at System.DirectoryServices.ChildEnumerator..ctor(DirectoryEntry container)
   at System.DirectoryServices.DirectoryEntries.GetEnumerator()
   at LdapClasses.LdapAccess.FindData(Int32 count) in d:\wlzx\ldapclasses\mngldap.cs:line 1274
   at LdapClasses.UserManger.FindUser(User match, Int32 count) in d:\wlzx\ldapclasses\mngldap.cs:line 746
   at LdapClasses.UserManger.GetEmpotyUser() in d:\wlzx\ldapclasses\mngldap.cs:line 655
   at UserInf.UserInf.GetEmpotyUser() in d:\wlzx\userinf\webservice\userinf\userinf.asmx.cs:line 158

我大概知道这可能是由于活动目录拒绝访问的问题,可能是由于目录不存在或者是由于在该目录下的相关权限不够造成的,但是这个到底应当怎么解决呢?寻遍了很多的英文网站都没有得到具体的解决方案,实在不明白,请高手们指教!!!!!

9 个解决方案

#1


提高Asp.Net的用户权限试一试。windows 2000在global.config中,windows 2003在IIS中配置。

#2


我用的是XP系统,怎么设置ASP。NET的权限啊?是设置所在虚拟目录的权限吗?如果是这样的话,好象没有什么用啊?

#3


把asp.net划到administrators组里面

#4


我的程序运行时要读取一个XML文件,在这个文件中有一个关于LDAP的配置信息:
<Ldap Host="127.0.0.1" Port="389" User="ak47" Password="asdfsdf" UserRoot="dc=accounts,dn=zzti,dn=edu,dn=cn" />
这个Host应当设为自己机器的IP,而这个端口号,用户,密码和根目录应当会在程序运行时自动的创建吧。

程序是这样:
public LdapAccess(Connection conn):base(conn.m_sHost,conn.m_nPort,conn.m_sUser,conn.m_sPassword,conn.m_sTableBase)
{
this.keyfield=conn.m_sKeyField;
m_spath="LDAP://"+this.host+"/"+this.path;
userroot=new DirectoryEntry(m_spath);
userroot.Username=this.user;
userroot.Password=this.password;
}
可是一旦运行到下面的这个函数时就会出错:
public override void GetData(string key)
{
DirectoryEntry user=userroot.Children.Find(this.keyfield+"="+key);
         ……………………
}
此时,错误就会指向DirectoryEntry user=userroot.Children.Find(this.keyfield+"="+key);这一句。
如果用WebService生成Web引用,执行时就会出现上面的一些错误,请问这是怎么回事???

#5


目录权限?

#6


或者还有其他的原因?

#7


没有人知道吗?

#8


up

#9


up

#1


提高Asp.Net的用户权限试一试。windows 2000在global.config中,windows 2003在IIS中配置。

#2


我用的是XP系统,怎么设置ASP。NET的权限啊?是设置所在虚拟目录的权限吗?如果是这样的话,好象没有什么用啊?

#3


把asp.net划到administrators组里面

#4


我的程序运行时要读取一个XML文件,在这个文件中有一个关于LDAP的配置信息:
<Ldap Host="127.0.0.1" Port="389" User="ak47" Password="asdfsdf" UserRoot="dc=accounts,dn=zzti,dn=edu,dn=cn" />
这个Host应当设为自己机器的IP,而这个端口号,用户,密码和根目录应当会在程序运行时自动的创建吧。

程序是这样:
public LdapAccess(Connection conn):base(conn.m_sHost,conn.m_nPort,conn.m_sUser,conn.m_sPassword,conn.m_sTableBase)
{
this.keyfield=conn.m_sKeyField;
m_spath="LDAP://"+this.host+"/"+this.path;
userroot=new DirectoryEntry(m_spath);
userroot.Username=this.user;
userroot.Password=this.password;
}
可是一旦运行到下面的这个函数时就会出错:
public override void GetData(string key)
{
DirectoryEntry user=userroot.Children.Find(this.keyfield+"="+key);
         ……………………
}
此时,错误就会指向DirectoryEntry user=userroot.Children.Find(this.keyfield+"="+key);这一句。
如果用WebService生成Web引用,执行时就会出现上面的一些错误,请问这是怎么回事???

#5


目录权限?

#6


或者还有其他的原因?

#7


没有人知道吗?

#8


up

#9


up