Я столкнулся с этой странной проблемой.В моем проекте WCF я ссылался на библиотеку классов, которая использует SQLite для запроса статических данных.Естественно, что библиотека классов использует System.Data.Sqlite + System.Data.SQLite.Core + System.Data.SQLite.EF6 + System.Data.SQLite.Linq от NuGet.Сам проект WCF не выполняет запрос.Он вызывает метод из библиотеки классов, который делает это.
Когда я запускаю его на своем компьютере разработчика, все хорошо.Но после того, как я развернул его в IIS на Windows Server 2012, было выдано исключение Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
.Я выполнил поиск SO и обнаружил, что мне нужно ссылаться как минимум на System.Data.SQLite.Core в моем основном проекте WCF и убедиться, что в нем есть папки x64 и x86 с соответствующим Sqlite.Interop.dll в каждой папке соответственно.Указанные папки генерируются автоматически с использованием ссылки NuGet и помещаются в папку bin .Так что я был счастлив.Развернуто.И произошло то же самое: все хорошо на машине разработчика, и затем не удалось загрузить DLL на сервер.
Я даже пытался ссылаться на все пакеты NuGet в основном проекте WCF, но безрезультатно.Затем мне пришло в голову попробовать вручную скопировать dll из папки x64 в корневую папку моего бина, прямо рядом с wcf.dll и System.Data.SQLite.dll.Теперь сообщение об ошибке изменилось на Unable to load DLL 'SQLite.Interop.dll': Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
вместо не найдено.После предоставления ему всех разрешений, это сработало!
Но это поведение кажется мне странным, потому что на моей машине разработчика и другом тестовом сервере я не могу воспроизвести это.Только на сервере Prod будет выдана эта ошибка.
Есть что-то, что я упустил из виду?Кстати, я попытался превратить свой проект WCF от таргетинга на AnyCPU только на x64.Я попытался использовать Включить 32-разрядный в расширенной настройке IIS AppPool.Ни одна из них не работала, пока все библиотеки DLL не оказались в корневом каталоге.