Старый сервер - это 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.
В этом блоге довольно подробно рассказывается об этой проблеме и о том, как ее решить.
Для полноты картины существует разница между запуском сайта как ASP.Net 1.0 и ASP.Net 2.0. Хотя фреймворк имеет обратную совместимость, я бы посоветовал попробовать запустить сайт как сайт Framework 1.1. Для этого может потребоваться загрузка Framework 1.1.
Однако пример кода предполагает, что это классический ASP. Следовательно, проблема связана с безопасностью COM-объекта. Убедитесь, что DLL была зарегистрирована, а также существует вероятность того, что объект, которому вы дали разрешение, зависит от другой DLL, к которой вы не предоставили доступ.
Кроме того, перезапустите IIS, а также сам компонент на сервере компонентов при изменении безопасности или любых других изменениях в этом отношении. Его часто нужно запустить из-за кеширования памяти и других расширенных причин.
Как и жаловались некоторые пользователи, вам непонятно, классический это asp или asp.net. Тем не менее, учитывая вашу тему и сообщение об ошибке, вот мои 2 цента
Это приложение .NET?
Похоже, ваше приложение обращается к 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).