gpt4 book ai didi

c# - asp.net 应用程序在没有硬编码用户名/密码的情况下识别本地主机上的用户而不是服务器上的用户

转载 作者:行者123 更新时间:2023-11-30 22:16:23 25 4
gpt4 key购买 nike

我正在 IIS8 (windows server 2012) 上设置一个新的 asp.net 站点。我正在尝试采用适用于 Windows Server 2008 IIS6 的旧代码。两者都是虚拟服务器。

已启用 Windows 身份验证。

匿名身份验证已禁用。 (尝试根据我阅读的一些帖子启用但没有更改)

通过以下方式获取用户:

string user = System.Web.HttpContext.Current.User.Identity.Name;

int separatorIndex = user.LastIndexOf(@"\");
if (separatorIndex != -1 && separatorIndex < user.Length - 1)
{
user = user.Substring(separatorIndex + 1);
}

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://na.xxxxxx.biz");

DirectorySearcher directorySearcher = new DirectorySearcher(rootEntry);
directorySearcher.Filter = string.Format("(&(objectClass=user)(objectCategory=user) (sAMAccountName={0}))", user);
directorySearcher.PropertiesToLoad.Add("displayName");

var result = directorySearcher.FindOne();

这在本地主机上运行良好,在服务器上返回错误:

System.DirectoryServices.DirectoryServicesCOMException (0x80072020): An operations error occurred. 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.FindOne() at EngApps.App_Code.UserFullName.LookUpDirectory() in e:\inetpub\wwwroot\App_Code\UserFullName.cs:line 45

第 45 行是我在上面使用“FindOne()”构成的最后一行

如果我对我的用户名和密码进行硬编码,一切都可以在服务器上运行:

rootEntry.Username = user;
rootEntry.Password = "xxxxxx";

但是我在旧代码库中不需要这个,所以我猜 IIS8 中有一个设置。我试了一下匿名身份验证并阅读了几篇文章,但还没弄明白。

感谢您的帮助。

最佳答案

问题很可能是您的应用程序运行所在的 IIS 应用程序池的标识没有权限查询域,例如 LocalService。

您应该检查之前实例上的应用程序池,并确保身份相同或至少具有相似的访问能力。

关于c# - asp.net 应用程序在没有硬编码用户名/密码的情况下识别本地主机上的用户而不是服务器上的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17435927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com