Проблемы при перемещении сайта IIS с w2k на w2k3
Старый сервер - это Windows 2000, и ответом первоначального установщика на практически все было C:\ -> Все -> Полный доступ. Тем не менее, там был документ установки, который, казалось, работал до определенного момента.
- Создан локальный администратор ком пользователя
- Созданы приложения COM+, ссылающиеся на этого пользователя, и некоторые библиотеки DLL, поставляемые с сайтом.
- Установленные.net версии 1.0, 1.1, 2.0 (я пробовал работать под каждой версией, без изменений по ошибке)
Ошибка объекта сервера "ASP 0178: 80070005" Ошибка доступа к Server.CreateObject /Include/fnLookups.asp, строка 10 Ошибка вызова Server.CreateObject при проверке разрешений. Доступ запрещен к этому объекту.
Строка 10 выглядит так:
set objClient = Server.CreateObject ("fooUser.CfooUser")
Я возвращаюсь в системный журнал, и у меня есть:
Параметры разрешений для конкретного приложения не предоставляют права локальной активации для приложения COM-сервера с CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1} пользователю mydomain\myusername SID (mySID). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.
Это своего рода прогресс, он забирает приложение COM и мой идентификатор просто отлично. Я добавил себя в "Права доступа" и "Разрешения на запуск и активацию" объекта "Мой компьютер" в dcomdnfg - но мой лай, похоже, направлен не на то дерево.
Я пробежал mskb198432 так хорошо, как только мог, хотя, похоже, он был направлен на более раннюю версию, но там тоже нет радости.
Любые идеи приветствуются.
Изменить - список предложенных предложений
- Исключил разницу x64, работающую в x32 с той же проблемой.
- исключены права доступа к файлам
- "Дайте всем локальные разрешения на запуск и активацию, чтобы убедиться, что это проблема с разрешениями COM" - готово, без радости
- Режим изоляции IIS5 включен
Изменить - Есть ли что-нибудь, что я могу посмотреть на старом сервере Windows 2k, что может дать некоторое представление?
14 ответов
Вы пытались добавить соответствующего пользователя в локальную группу пользователей DCOM?
http://technet.microsoft.com/en-us/library/cc738214(WS.10).aspx
Эта ошибка является ключом:
Параметры разрешений для конкретного приложения не предоставляют права локальной активации для приложения COM-сервера с CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1} пользователю mydomain\myusername SID (mySID).
COM-объект не должен работать как вы, он должен работать как пользователь IUSR_MachineName или сетевой службы, пользователь, который запускает IIS. Вы не хотите, чтобы каждый пользователь, который обращается к сайту, запускал DLL как он - плохая идея.
Убедитесь, что разрешение физического каталога, на которое указывает ваш виртуальный каталог имя пользователя, на котором запущен IIS (IUSR_machinename), имеет правильные разрешения, а DLL, зарегистрированная в COM, имеет правильные разрешения для пользователя IIS.
Разрешения трудно отлаживать в IIS, поскольку события безопасности не всегда записываются в журнал событий безопасности. Средство Authentication & Access Control Diagnostics 1.0 - отличный инструмент для изучения проблем с разрешениями.
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1285
Для полноты картины существует разница между работой сайта под ASP.Net 1.0 и ASP.Net 2.0. Несмотря на то, что фреймворк обратно совместим, я бы посоветовал попробовать запустить сайт как сайт фреймворка 1.1. Это может потребовать загрузки Framework 1.1.
Однако пример кода показывает, что это классический ASP. Поэтому проблема связана с безопасностью на COM-объекте. Убедитесь, что библиотека DLL зарегистрирована, и существует также вероятность того, что объект, на который вы дали разрешение, зависит от другой библиотеки DLL, к которой у вас нет доступа.
Кроме того, перезапустите IIS, а также сам Компонент на сервере компонентов при изменении безопасности или любых других изменений. Его часто нужно запускать из-за кеширования памяти и других причин.
Согласно блогу Microsoft Web Technology, эта ошибка вызвана улучшенной безопасностью DCOM, которая была введена в SP1 или SP2 для Windows 2003.
В этом блоге подробно описана эта проблема и способы ее решения.
Это классическое приложение ASP, а не приложение ASP.NET. Убедитесь, что ваш пул приложений IIS, на котором размещено это приложение, работает в контексте созданного вами пользователя. Кроме того, убедитесь, что приложение отсутствует в других пулах приложений, в которых размещаются приложения ASP.NET.
Попробуйте дать "Сетевой службе" доступ к каталогу "Temp" (C:\WINDOWS\Temp)
Надеюсь, это поможет;-)
Я имел дело с этим на прошлой неделе. Вы должны убедиться, что у пользователя ASPNET (да, я знаю, что это классический asp) есть права на "Вход в систему как пакетное задание" и "Вход в систему как сервис".
В разделе "Инструменты администратора", "Локальная политика безопасности" откройте "Локальные политики" -> "Назначение прав пользователя" и убедитесь, что у пользователя aspnet есть права на эти политики.
Вероятно, не помешает добавить IWAM_ и IUSR_.
ASP.Net рабочий процесс w3wp.exe по умолчанию запускается под NETWORK SERVICE
аккаунт на W2K3.
Убедитесь, что эта учетная запись имеет право на доступ и создание объекта, о котором идет речь.
Как уже говорили другие, это классическая проблема ASP и COM - похоже, не имеет ничего общего с.NET.
Все, что я могу добавить к тому, что было сказано, - это не забыть убедиться, что у пользователя есть доступ к библиотеке DLL объектов COM в файловой системе.
Вы используете пул приложений в качестве своей учетной записи (mydomain\myusername)? Если это так, вам нужно будет добавить эту учетную запись в IIS_WPG.
Вы также можете добавить IIS_WPG в группу "Распределенные пользователи COM" или найти фактический элемент в службах компонентов и напрямую предоставить доступ к IIS_WPG.
Я добавил себя в "Права доступа" и "Разрешения на запуск и активацию" объекта "Мой компьютер" в dcomcnfg
На "Моем компьютере" есть 2 разных параметра безопасности - "Пределы" и "Значения по умолчанию". Вам необходимо дважды проверить, что вы отредактировали значения по умолчанию и лимиты, по крайней мере, выше, чем ваши значения по умолчанию (хотя, IIRC, каждый может иметь локальную активацию).
Вы также должны перейти к самому компоненту и убедиться, что он использует безопасность по умолчанию. Если это Customized, то вам нужно отредактировать это также (с учетом ограничений).
Для устранения неполадок мне бы очень хотелось просто предоставить всем локальные разрешения на запуск и активацию, чтобы убедиться, что это проблема с разрешениями COM. IIRC, ошибки при запуске компонента могут приводить к вводящим в заблуждение сообщениям об ошибках, которые на некоторое время заставят вас почесать голову.
Изменить: Вы также должны убедиться, что GUID, указанный в журнале событий, на самом деле является тем компонентом, который, по вашему мнению, является. Используйте Regedit, чтобы найти GUID и проверить AppName. Возможно, это не установленный компонент, а зависимость.
Как жаловались некоторые пользователи, вы не поняли, является ли это классическим asp или asp.net. Тем не менее, с вашей темой и сообщением об ошибке, вот мои 2 цента
Это приложение.NET
- Сделайте, чтобы ASP.NET был установлен правильно.
- Убедитесь, что сайт настроен для ASP.NET 2.0 в IIS.
Похоже, ваше приложение получает доступ к COM-объекту, поэтому убедитесь, что рабочий процесс IIS имеет доступ к этому компоненту. Вы можете попробовать запустить FILEMON и REGMON, чтобы выяснить, какой именно компонент является виновником. Если компонент находится в папке Program Files/Common, убедитесь, что для этой папки установлены правильные разрешения.
Доступ к COM-компонентам в ASP.NET или даже в Classis ASP, как правило, B.... для устранения неполадок.
Помимо других предложений, я бы также попытался запустить веб-сайт в режиме изоляции IIS 5, чтобы исключить различия между IIS 5 (Server 2000) и более безопасным IIS 6 (Server 2003).
- Откройте инструмент администрирования IIS
- Щелкните правой кнопкой мыши "Веб-сайты" и выберите "Свойства" в контекстном меню.
- Выберите вкладку "Сервис"
- Установите флажок "Запустить службу WWW в режиме изоляции IIS 5.0"
- Перезагрузите IIS
Возможно, вы захотите пройти через KB 899965, он имеет несколько довольно подробных шагов и кажется, что он может быть немного более конкретным для вашей проблемы.
Надеюсь, это поможет!