У меня есть сборка .NET COM, которую я пытаюсь развернуть на веб-сервере (IIS 6 Win 2003). Мы успешно развернули эту сборку в нашей тестовой среде, но производственная среда не работает.
Сборка вызывается с классической ASP-страницы. Каждый раз, когда эта страница пытается инициализировать сборку с помощью «Set LTMRender = CreateObject("LTMRender.Render")
», я получаю сообщение об ошибке «Error Type:, (0x80070002)
».
Эта ошибка указывает на то, что в разрешении отказано или тип файла не найден.
Я создал тестовое приложение, чтобы проверить, работает ли сборка за пределами веб-страницы. .Exe инициализирует сборку, а затем выполняет вызов, предназначенный для сбоя, что, в свою очередь, заставляет сборку создать файл журнала. Он работает, если я запускаю .exe в той же папке, что и сборка, но не работает, если я запускаю его в другом месте.
По какой-то причине сборка недоступна извне ее папки.
Я не могу понять, почему это не сработает. Вещи, которые я подтвердил:
- Папка развертывания имеет соответствующие разрешения.
- Мы подтвердили, что папка, в которой установлена сборка, имеет правильные разрешения для всех необходимых учетных записей пользователей.
- Сборка подписана строгим именем и зарегистрирована с помощью regasm.exe C: _WebSites \ LTMRender \ LTMRender.dll / codebase /tlb:C:_WebSites\LTMRender\LTMRender.tlb. Regasm сообщил об успехе.
- В сборке правильно заданы атрибут и соответствующие GUID.
Какие-нибудь советы?
EDIT
Мы запустили filemon против моего testapp.exe и, похоже, указали на проблему. Когда testapp.exe запускается в папке D: _websites \ DocWebV2 \ или D: _websites \ DocWebV2 \ LTMRender \, он успешно работает, и файлmon показывает D: _websites \ DocWebV2 \ LTMRender \ pinPDF.dll SUCCESS
Если я запускаю свой testapp.exe в D: _websites \ DocWebV2 \ Client - там, где запускаются мои asp-страницы, отображается D: _websites \ DocWebV2 \ pinPDF.dll ИМЯ НЕ НАЙДЕНО, а затем D: _websites \ DocWebV2 \ pinPDF \ ФАЙЛ pinPDF.dll НЕ НАЙДЕН
Я не уверен, почему он не ищет нужную папку, если она находится только в этой конкретной папке.