IIS 7.0 / Windows Server 2008 - DLL не найдена в приложении ASP.NET - PullRequest
3 голосов
/ 28 января 2011

Я пытаюсь запустить страницу ASPX, размещенную на Windows Server 2008 x86 через IIS 7.0, с .NET 4.0. Я добавил приложение app1 в Default Web Site IIS, сопоставленное с dir C:\toto\app1, который содержит файл Web.config. У меня ошибка:

Не удалось загрузить файл или сборку 'xxx.dll' или одну из ее зависимостей и т. Д.

и xxx.dll - это DLL-библиотека .NET, которая содержит собственные библиотеки C ++ DLL ( они - это зависимости, которые не могут быть загружены), все они расположены в C:\toto\app1\bin. Я попытался изменить переменную PATH env, чтобы она содержала каталог bin (да, я знаю, что это плохо :-)), но это все равно не сработало.

Полагаю, что на уровне приложений IIS должно быть что-то, но я не мог понять, что ... Не могли бы вы помочь?

Большое спасибо!

РЕДАКТИРОВАТЬ: копирование собственных DLL в C:\windows\system32 на самом деле работает, но это совсем не приятное решение ...

Ответы [ 5 ]

0 голосов
/ 23 мая 2014

У меня такая же проблема.Если я просматриваю веб-сайт локально на сервере, он работает нормально, но когда я просматриваю его через Интернет по доменному имени, он не может найти библиотеки DLL, которые находятся в папке bin сайта ...

0 голосов
/ 31 января 2014

У меня точно такая же проблема.DLL находятся в каталоге webapp / bin, но не загружены.Мне удалось поместить их в inetpub / bin, и там он работает нормально.Однако должно быть поведение, позволяющее загружать модуль в каталог bin веб-приложения.Не знаю, как это настроить.

0 голосов
/ 31 января 2011

Ну, наконец-то удалось заставить его работать, скопировав библиотеки DLL в каталог windows\system32 (понятия не имею, почему он не работал в первый раз, вероятно, моя ошибка ...). Папки application\bin не работают, равно как и изменение переменной PATH.

Если кто-нибудь знает лучшее решение (я не нахожу это блестящее решение, которое может привести к конфликту DLL и т. Д.), Я буду рад его услышать!

0 голосов
/ 31 января 2011

Я думаю, что это сделает работу. Сделайте это на сервере. Отмените все, что вы сделали, прежде чем делать это. Перейдите в START-> RUN и введите cmd, затем выполните следующую команду regsvr32 "C:\yourfolder\idrskrn_net14.dll" с включенным «.

Наслаждайтесь!

0 голосов
/ 28 января 2011

Если это не GACd (который, по-видимому, не является), простой ответ:

Вам необходимо, чтобы внешняя DLL была в каталоге bin \ приложения.* Если у вас есть ссылка в VS2010, выберите ее, перейдите в свойства и установите для параметра CopyLocal значение True.Перестройте приложение.Это должно привести к тому, что эта DLL будет скопирована в корзину, и ваше приложение сможет ссылаться без какой-либо другой работы.

...