Какие настройки должны быть установлены, чтобы олицетворение работало для классического приложения ASP, работающего под IIS 7.5? У меня он отлично работает на моем тестовом сервере (Windows Server 2008 R2), но у меня есть пользователь, который пытается заставить его работать на своем сервере R2, и я не могу понять, какие настройки у них неправильные.
Вот основы настройки приложения на моем тестовом сервере:
Когда вы запускаете приложение на моем тестовом сервере, пользователь вводит свои учетные данные в окне обычной проверки подлинности, а затем приложение вызывает объект на стороне сервера. Из Process Monitor я вижу, что объект работает под NetworkService, но олицетворяет личность пользователя. Однако на этом другом сервере, над которым мы работаем, объект не олицетворяет пользователя. Он будет работать под любой учетной записью, для которой настроен пул приложений.
Что остановит работу олицетворения, если сервер настроен, как описано выше? Я предполагаю, что настройки web.config не будут иметь к этому никакого отношения, поскольку это классическое приложение ASP, а не приложение ASP.NET. Но ради удовольствия я попробовал "сломать" свой тестовый сервер и поставить <identity impersonate="false"/>
в файл конфигурации. Как я и подозревал, это не имело никакого эффекта, и выдача себя за другое лицо все еще работала нормально.
Какие настройки я должен попросить их проверить? Они упоминают, что они «заблокировали» этот сервер, поэтому я уверен, что какие-то настройки должны мешать этому работать.
Я наконец нашел ответ! На сервере, на котором возникла проблема с олицетворением, для свойства «Выполнить в MTA» было установлено значение True в настройках ASP. Когда мы снова переключили его на False (значение по умолчанию для ExecuteInMta), олицетворение снова заработало.
Чтобы найти этот параметр, щелкните Default Web Site, а затем дважды щелкните ASP. Затем разверните раздел «Свойства Com Plus» в группе «Службы». Надеюсь, это поможет, если кто-нибудь еще столкнется с этой проблемой.