尝试在Azure上使用带有身份验证和授权的默认dotnet核心示例应用程序的Sqlite数据库。在我的本地计算机上,它将数据库放在/Users/me/Projects/myProj/bin/Debug/netcoreapp1.0/myProj.db
- 我的appsettings.json
包含这个:
"ConnectionStrings": {
"DefaultConnection": "Data Source=myProj.db"
所以现在当我上传到没有appsettings.json的azure时,我必须在应用程序设置中配置连接 - >天蓝色的连接字符串部分。我遇到的部分问题是当我从本地主机git push
到azure时,数据库的位置会发生变化。它被移动到d:\home\site\wwwroot
。我知道我必须更改连接字符串,但是我对我的想法的各种更改应该使它指向失败 - 我是否包含“数据源”部分?或者......我需要报价吗?我看到一个related post,在评论中给出了一个有趣的答案,但这没有用。
答案 0 :(得分:4)
SQLite的连接字符串应包含DataSource
,如下所示:
Data Source=c:\path\mydb.db;
您的SQLite数据库应位于项目的App_data文件夹中。您需要为.NET核心项目手动创建它。
然后,如果您不确定,可以使用Kudu检查已部署的网站并找出部署后数据库文件的放置位置。登录到Kudu,导航到https://yourwebsite.scm.azurewebsites.net
,即您的网站Uri,但在名称和azurewebsites.net之间添加 scm 。使用您用于Azure门户的相同凭据登录。
您现在应该看到Kudu门户网站。转到调试控制台,然后选择 CMD 或 PowerShell (您可以选择)。在顶部,您现在将看到一个文件资源管理器,如果已正确部署,您应该能够在此处找到您的数据库文件。
只需导航至D:\home\site\wwwroot
,然后查看您是否有App_data
文件夹。找到数据库后,您可以将该路径放入Azure门户中的连接字符串并重新启动网站。
另一种方法是在代码中构建连接字符串,并允许ASP.NET为您创建文件夹:
ConnectionString = "Data Source=" +
HttpContext.Current.Server.MapPath(@"\App_Data\mydb.db");
或:
ConnectionString = "Data Source=" +
AppDomain.CurrentDomain.GetData("DataDirectory") + "mydb.db";
请注意,您网站在App_data
(或任何其他磁盘位置)的网站可用空间有限(取决于您的等级),如果您的数据库耗尽了您的网站将崩溃的所有内容,数据库不会保存数据,每个人都会感到难过。
另一个选择是使用blob storage并将SQLite数据库文件放在那里。