2013-07-02 4 views
2

Я настраиваю новый сайт 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 есть настройка. Я немного поиграл с анонимной аутентификацией и прочитал несколько сообщений, но пока не понял.

Благодарим за помощь.

ответ

3

Возможно, проблема в том, что идентификатор пула приложений IIS, на котором запущено приложение, - это то, что не имеет полномочий запрашивать домен, например LocalService.

Вы должны проверить пул приложений в предыдущем экземпляре и убедиться, что идентичности идентичны или, по крайней мере, имеют аналогичные возможности доступа.

+0

Это сработало, спасибо за быстрый ответ! –