Доступ запрещен при отладке приложения ASP.NET Core, ссылающегося на Sqlite, запущенный в IIS - PullRequest
1 голос
/ 02 апреля 2019

Проект ASP.NET Core 2.2 ссылается на Microsoft.EntityFrameworkCore.Sqlite (2.2.3) как PackageReference.

Отладка приложения в IIS Express работает нормально из-за повышенного пользовательского процесса.

Проблема: При отладке приложения в IIS выдается ошибка Unable to load DLL 'e_sqlite3' or one of its dependencies: Access is denied.

Как отладить приложение в IIS без кропотливых шагов публикации?


Мой анализ такfar :

Хотя файл e_sqlite3.dll успешно найден и успешно загружен в папку %userprofile%\.nuget\packages\sqlitepclraw.lib.e_sqlite3.v110_xp\1.1.12\runtimes\win-x64\native\e_sqlite3.dll, он имеет только Read, но не установлен Read & Execute разрешения.

Отсутствует Execute разрешения, кажется, виновны.

Это работает, если я даю Users группу или ApplicationPoolIdentity также Read & Execute.

Почему в глобальной папке пакетов NuGet отсутствует Read & Execute?Это только проблема неуправляемого кода DLL?

Stack Trace

System.DllNotFoundException: Unable to load DLL 'e_sqlite3' or one of its dependencies: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
   at SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_libversion_number()
   at SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number()
   at SQLitePCL.raw.SetProvider(ISQLite3Provider imp)
...