Я создал веб-приложение ASP.NET MVC, которое использует базу данных SQLite под EF6.Не удается получить доступ к SQLite DB на Azure Web App
Приложение прекрасно работает в VS. База данных включена в проект в папке App_Data. Когда я публикую на Azure (или тестовый сервер IIS в локальной сети), я получаю сообщение об ошибке. В экземпляре Azure отображается ошибка HTTP 500, и это происходит только в представлениях, требующих доступа к базе данных для загрузки. Кроме этого он работает нормально. На тестовом сервере IIS отображается сообщение об ошибке , неспособное открыть файл базы данных. Я попытался разблокировать разрешения на файл .db на экземпляре IIS, но ничего не изменилось. Я не уверен, как делать что-либо на примере Azure.
Может кто-нибудь помочь мне с отладкой проблемы соединения SQLite на Azure/IIS?
Подробности
- VS 2015 Enterprise
- Azure услуг приложений (свободный уровень, производство сервера) базы данных
- SQLite3
- IIS на Windows Server 2012R2 (тестовый сервер)
Я пробовал всевозможные комбинации строк подключения:
- настройка строки подключения к
D:/xxx/xxx path
в Azure Portal - изменение строки подключения в профиле развертывания в VS (заменяет значение в web.config при развертывании)
- просто оставить его все равно
Ничего не работало или даже не изменило эту ошибку. Возможно, одна из этих конфигураций может получить доступ к файлу, но просто не может его открыть (что, по-моему, является тем, что предлагает ошибка IIS). Даже тогда, как мне узнать?
EDIT На тестовом сервере IIS, я обнаружил, что вся проблема в том, что строка соединения в Web.config было неправильно. Я вручную отредактировал его на сервере, и он выстрелил прямо вверх. Я все еще не уверен, как исправить путь на сервере Azure и как исправить мои настройки развертывания в VS, чтобы ввести правильный путь. Мысли по этим направлениям по-прежнему ценятся.
EDIT 2
Я также обнаружил, что каждый раз, когда я попал на страницу, требующий доступа к БД, я вижу, эта ошибка появляется в журнале приложений на Azure:
2017-01 -03T20: 25: 32 System.ApplicationException: прослушиватель трассировки AzureBlobTraceListener отключен. ---> System.InvalidOperationException: адрес SAS для учетной записи облачного хранилища не указан. Используйте переменную окружения 'DIAGNOSTICS_AZUREBLOBCONTAINERSASURL' для ее определения. в Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.RefreshConfig() --- Конец внутренней трассировки стека исключений ---
[Стрелять назад] (http://www.sqlite.org/whentouse.html). В любом случае, узнайте, какой пользователь IIS работает, и какие разрешения для файлов * и * всех каталогов; и попытайтесь открыть файл и создать новый файл, а также журналы. –
@CL. Я попытался отключить наследование в файле .db, а затем предоставил разрешение IIS_IUSRS для чтения/записи файла. Я также пробовал различные конфигурации в папке. Я даже пытался дать «всем» полный доступ, но это не сработало. Даже если бы я работал над IIS, я не знаю, как исправить проблему на Azure. Есть какие-то мысли? – trademark
Вы должны выяснить, какова фактическая ошибка. См. Последнюю часть моего предыдущего комментария. –