ASP.Net Core: ошибка SQLite 14: «невозможно открыть файл базы данных», если он находится в корневой папке - PullRequest
0 голосов
/ 28 января 2019

Мой DatabaseContext имеет:

string physicalPath = "Filename=" + Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "Data"), "Database.db");
optionsBuilder.UseSqlite(physicalPath);

Мой Startup имеет:

using (var client = new DatabaseContext())
{
   client.Database.EnsureCreated();
}

Он отлично работает с "D:\\Database.db", но он не очень портативный, поэтому мне нужно использоватьсвои собственные каталоги.

У кого-нибудь есть идеи?

Обновление : Я попытался снова с учебником здесь и получил ту же ошибку на странице исключений,

«Произошло необработанное исключение при обработке запроса. SqliteException: ошибка SQLite 14:« невозможно открыть файл базы данных ». Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC (int rc, sqlite3 db)»

Обновление: я получаю "System.UnauthorizedAccessException: 'Доступ к пути' C: \ Program Files \ IIS Express \ test.txt 'запрещен.'" При попытке

string path = Path.Combine (Directory.GetCurrentDirectory (), "test.txt");

с использованием (FileStream fs = File.Create (path)) {Byte [] info = new UTF8Encoding(true) .GetBytes («Это некоторый текст в файле.»);// Добавить некоторую информацию в файл.fs.Write (info, 0, info.Length);}

1 Ответ

0 голосов
/ 21 июля 2019

Как насчет использования следующего для построения пути, указывающего на ваш файл БД?:

// Gets the current path (executing assembly)
string currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// Your DB filename    
string dbFileName = "stuff.db"; 
// Creates a full path that contains your DB file
string absolutePath = Path.Combine(currentPath, dbFileName);

Обратите внимание, что вам нужно будет включить следующие using операторы в DatabaseContext:

using System.IO;
using System.Reflection;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...