我刚加入一家公司,以支持一个没人知道的网络应用程序。所有曾经知道的人都已经离开了。
该应用程序正在使用dll(我只有二进制文件),用于获取用户所属的Active Directory组的字符串列表。代码在生产中工作,当我在VS2005 IDE中以交互方式运行时,但在IIS中本地运行它时不起作用。
代码是这样的。它在第127行爆炸:
Line 127: userGroups = new FW.DirectoryHelper(username).getGroups();
Line 128: List<string> roles = new List<string>();
Line 129: List<string> groups = new List<string>();
出现此错误:
获取群组信息时出错。指定的域名不存在或无法联系。
这看起来像ASPNET帐户无法访问Active Directory的某种问题,但为什么它以交互方式工作但不在IIS下工作?这是因为当我运行interactivevely时,我使用自己的凭据而不是ASPNET帐户运行?为什么它会在其他(例如,UAT)IIS服务器上运行,包括生产而不是本地?
我是否需要制作一些本地IIS配置或fodler安全配置才能使其在本地运行?
二进制文件肯定会在我公司的其他地方使用;我认为这是一个共享的IT实用工具,任何人都不会支持或试图找到一个难以证明的人。
我的本地IIS配置了Windows身份验证已启用且匿名已关闭。我也试过Windows Auth on和Anonymous ......
答案 0 :(得分:1)
您的问题与我最近回答的问题非常相似,他们也使用IIS 5.1。
在我的回答中,我提供了几种可能的解决方案,您可能想要做的是使用ASP.Net模拟。
答案 1 :(得分:1)
代码正在使用ldap的windows登录凭据,无论哪个pc正在运行该程序。尝试将iis设置为匿名访问,并为其提供一个具有ldap阅读权限的帐户(可能是假人)。在您的web.config文件中,您将要设置此匿名帐户,如下所示:
<system.web>
<identity userName="DOMAIN\username" password="myPW"/>
</system.web>
答案 2 :(得分:0)
这是IIS6还是7?
如果II6确保应用程序池标识设置为域帐户的标识。
如果IIS7确保在“基本设置”下将其设置为域帐户。
希望这是帮助。
答案 3 :(得分:0)
快速解决方法是将本地IIS的标识设置为使用您的登录凭据而不是默认系统帐户。