c# - 部署时的 ASP .NET Core 3 MVC 连接字符串问题
问题描述
场景
我正在创建一个应用程序并将其托管在 Windows Server 2012 上。开发时,localdb 可以使用以下连接字符串正常工作:
"ConnectionStrings": {
"DatabaseConnection": "Server=.\\SQLEXPRESS;AttachDBFilename=[DataDirectory]\\<database name>.mdf;Integrated Security=True;"
}
其中 [DataDirectory] 在 Startup.cs 中设置:
var path = AppDomain.CurrentDomain.BaseDirectory;
path = Path.GetFullPath(Path.Combine(path, @"..\..\..\wwwroot\<folder name>"));
AppDomain.CurrentDomain.SetData("DataDirectory", path);
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DatabaseConnection").Replace("[DataDirectory]", path)));
在我的本地机器上测试它会产生预期的结果。
问题
将其发布到服务器后(.mdf 和 _log.ldf 文件位于 wwwroot 下的文件夹中,它们也已发布),它不再工作:
错误。处理您的请求时发生错误。开发模式切换到开发环境将显示有关所发生错误的更详细信息。不应为已部署的应用程序启用开发环境。它可能导致向最终用户显示来自异常的敏感信息。对于本地调试,通过将 ASPNETCORE_ENVIRONMENT 环境变量设置为 Development 并重新启动应用程序来启用开发环境。
我将 ASPNETCORE_ENVIRONMENT 环境变量设置为Development并重新发布了应用程序,但这仍然是我得到的唯一错误消息,没有详细信息。
可能的解决方案
根据我的研究,不建议在生产中使用AttachDBFilename,最好在主机上设置 SQL DB。不想详细说明,即使使用免费版本的 SQL DB (Express) 的想法也被拒绝,尽管我猜这会使解决问题变得更容易一些(调整连接字符串)。这意味着我必须使用这个AttachDBFilename解决方法,即使它并不理想。
(尝试以许多不同的方式修改连接字符串,但没有运气。我还添加了标签Initial Catalog=(database name),即使它在本地工作,在远程它也没有改变)。
任何帮助将不胜感激,谢谢。
解决方案
推荐阅读
- python-3.x - 在卷积操作中修复/冻结单个内核权重
- python - 为图文配对数据构建 TfRecord
- c++ - AVX2:分配给 __m256i 类成员时出现分段错误
- sqlplus - 使用 ACCEPT 命令示例
- javascript - 使用 Cordova 通过服务器提供商连接到 mysql
- python-3.x - 创建动态字典名称
- reactjs - NavBar 在 Reactjs 中不工作 MDBootstrap
- sql - 将多值依赖项放在自己的表中但感到困惑
- php - 如何使用 php 从这样的 html 响应中选择元素?
- python - 我有一个 xpath 列表,如何在不同的选项卡中打开它们中的每一个?