Назад | Перейти на главную страницу

Проблемы при переносе сайта IIS с w2k на w2k3

Старый сервер - это Windows 2000, и первоначальный ответ установщика почти на все был C: \ -> Все -> Полный доступ. Однако там БЫЛ установочный документ, который, казалось, работал до определенного момента.

Ошибка объекта сервера «ASP 0178: 80070005» Ошибка доступа Server.CreateObject /Include/fnLookups.asp, строка 10 Вызов Server.CreateObject завершился неудачно при проверке разрешений. Доступ запрещен к этому объекту.

Строка 10 выглядит так:

установить objClient = Server.CreateObject ("fooUser.CfooUser")

Я захожу в системный журнал и вижу:

Параметры разрешений для конкретного приложения не предоставляют разрешение локальной активации для приложения COM-сервера с CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1} пользователю mydomain \ myusername SID (mySID). Это разрешение безопасности можно изменить с помощью инструмента администрирования служб компонентов.

Это своего рода прогресс, приложение COM и мой идентификатор в порядке. Я добавил себя в «Разрешения доступа» и «Разрешения на запуск и активацию» объекта «Мой компьютер» в dcomdnfg, но мой лай, похоже, направлен не в то дерево.

Я пробежал через mskb198432 насколько я мог, хотя кажется, что он направлен на более раннюю версию, но и в этом нет никакой радости.

Любые идеи приветствуются.

Изменить - список проверенных предложений

Изменить - есть ли что-нибудь, что я могу изучить на старом сервере Windows 2k, что может дать некоторое представление?

Вы пробовали добавить соответствующего пользователя в локальную группу пользователей 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 или Network Service, пользователь, на котором запущен 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

Согласно блогу Microsoft Web Technology, эта ошибка вызвана повышенной безопасностью DCOM, которая была представлена ​​в SP1 или SP2 для Windows 2003.

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

http://blogs.msdn.com/puneetgupta/archive/2008/01/19/server-createobject-failed- while-checking-permissions.aspx

Для полноты картины существует разница между запуском сайта как ASP.Net 1.0 и ASP.Net 2.0. Хотя фреймворк имеет обратную совместимость, я бы посоветовал попробовать запустить сайт как сайт Framework 1.1. Для этого может потребоваться загрузка Framework 1.1.

Однако пример кода предполагает, что это классический ASP. Следовательно, проблема связана с безопасностью COM-объекта. Убедитесь, что DLL была зарегистрирована, а также существует вероятность того, что объект, которому вы дали разрешение, зависит от другой DLL, к которой вы не предоставили доступ.

Кроме того, перезапустите IIS, а также сам компонент на сервере компонентов при изменении безопасности или любых других изменениях в этом отношении. Его часто нужно запустить из-за кеширования памяти и других расширенных причин.

Как и жаловались некоторые пользователи, вам непонятно, классический это asp или asp.net. Тем не менее, учитывая вашу тему и сообщение об ошибке, вот мои 2 цента

Это приложение .NET?

  1. Сделайте usre. ASP.NET установлен правильно.
  2. Убедитесь, что сайт настроен для ASP.NET 2.0 в IIS.

Похоже, ваше приложение обращается к COM-объекту, поэтому убедитесь, что рабочий процесс IIS имеет доступ к этому компоненту. Вы можете попробовать запустить FILEMON и REGMON, чтобы точно определить, какой компонент является виновником. Если компонент находится в папке Program Files / Common, убедитесь, что для этой папки установлены правильные разрешения.

Доступ к COM-компонентам в ASP.NET или даже Classis ASP обычно является B .... для устранения неполадок.

Это классическое приложение ASP, а не приложение ASP.NET. Убедитесь, что ваш пул приложений IIS, на котором размещено это приложение, работает в контексте созданного вами пользователя. Кроме того, убедитесь, что это приложение не находится в каких-либо других пулах приложений, в которых размещаются приложения ASP.NET.

Как уже говорили другие, это классическая проблема ASP и COM - похоже, не имеет ничего общего с .NET.

Все, что я могу добавить к сказанному, - это не забудьте убедиться, что у пользователя есть доступ к DLL COM-объекта в файловой системе.

Я добавил себя в «Разрешения доступа» и «Разрешения на запуск и активацию» объекта «Мой компьютер» в dcomcnfg

На «Мой компьютер» есть 2 разных параметра безопасности - «Ограничения» и «По умолчанию». Вам необходимо дважды проверить, отредактировали ли вы значения по умолчанию, и что лимиты, по крайней мере, выше, чем ваши значения по умолчанию (хотя IIRC, каждый может иметь локальную активацию).

Вам также следует перейти к самому компоненту и убедиться, что он использует безопасность по умолчанию. Если он настроен, вам также необходимо отредактировать его (помня о пределах).

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

Изменить: вы также должны убедиться, что GUID, указанный в журнале событий, на самом деле является компонентом, который вы думаете. Используйте Regedit, чтобы найти GUID, и проверьте AppName. Возможно, это не установленный компонент, а зависимость.

Попробуйте предоставить "сетевой службе" доступ к каталогу "Temp" (C: \ WINDOWS \ Temp)

Надеюсь, это поможет ;-)

Вы используете пул приложений в качестве своей учетной записи (mydomain \ myusername)? Если это так, вам нужно будет добавить эту учетную запись в IIS_WPG.

Вы также можете добавить IIS_WPG в группу «Распределенные пользователи COM» или найти фактический элемент в службах компонентов и напрямую предоставить доступ к IIS_WPG

Рабочий процесс ASP.Net w3wp.exe по умолчанию выполняется под NETWORK SERVICE аккаунт на W2K3.

Убедитесь, что эта учетная запись имеет право на доступ и создание экземпляра рассматриваемого объекта.

Я имел дело с этим на прошлой неделе. Вы должны убедиться, что пользователь ASPNET (да, я знаю, что это классический asp) имеет права «Входить в качестве пакетного задания» и «Входить в качестве службы».

В Admin Tools, Local Security Policy откройте Local Policies -> User Rights Assignment и убедитесь, что у пользователя aspnet есть права на эти политики.

Наверное, не помешало бы также добавить IWAM_ и IUSR_.

Вы можете захотеть пробежать КБ 899965, в нем есть несколько довольно подробных шагов и, похоже, он может быть немного более специфичным для вашей проблемы.

Надеюсь, это поможет!

Помимо других предложений, я бы также попробовал запустить веб-сайт в режиме изоляции IIS 5, чтобы исключить различия между IIS 5 (Server 2000) и более безопасным IIS 6 (Server 2003).

  1. Откройте инструмент администрирования IIS
  2. Щелкните правой кнопкой мыши «Веб-сайты» и выберите «Свойства» в контекстном меню.
  3. Выберите вкладку "Сервис".
  4. Установите флажок «Запустить службу WWW в режиме изоляции IIS 5.0».
  5. Перезагрузите IIS