Я настраиваю новый сайт asp.net на IIS8 (сервер Windows 2012). Я пытаюсь взять более старый код, который работает на сервере Windows 2008, IIS6. Оба являются виртуальными серверами.asp.net Приложение идентифицирует пользователя на localhost, но не на сервере без жесткого кодирования имя пользователя/пароль
Включена аутентификация 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): Произошла операционная ошибка. в System.DirectoryServices.DirectoryEntry.Bind (Boolean throwIfFail) в System.DirectoryServices.DirectoryEntry.Bind() в System.DirectoryServices.DirectoryEntry.get_AdsObject() в System.DirectoryServices.DirectorySearcher.FindAll (Boolean findMoreThanOne) в System.DirectoryServices.DirectorySearcher .FindOne() в EngApps.App_Code.UserFullName.LookUpDirectory() в е: \ Inetpub \ Wwwroot \ App_Code \ UserFullName.cs: линия 45
линия 45 является последней линией я задал выше, используя «FindOne() '
Если я жесткий код мое имя пользователя и пароль все работает на сервере:
rootEntry.Username = user;
rootEntry.Password = "xxxxxx";
Но мне это не нужно в старой кодовой базе, поэтому я предполагаю, что в IIS8 есть настройка. Я немного поиграл с анонимной аутентификацией и прочитал несколько сообщений, но пока не понял.
Благодарим за помощь.
Это сработало, спасибо за быстрый ответ! –