0

我有一个正在开发的 ASP.NET Core 项目,我正在使用 LiteDB 作为数据库解决方案。为了实例化我的数据库,我需要提供一个 URI,以便程序知道在哪里创建数据库。

通常我会做一些事情,比如System.Environment.CurrentDirectory()找到我所在的当前目录并修改它,但是这个命令的结果结果是C:\program files\IIS Express或类似的。基本上,当前目录指向 IIS Express 的位置。

相反,我想获取我的 ASP.NET 项目的根目录,该位置包含我的控制器文件夹、appsettings.json、bin 和 obj 文件夹。

我需要使用什么命令来获取表示此位置的字符串?出于明显的原因,我不想使用硬编码字符串。

4

2 回答 2

0

如果您无权访问 DI,您可以尝试:

Assembly.GetExecutingAssembly().Location

如果您有权访问 DI,请尝试以下操作:

注入IHostingEnvironment并调用environment.ContentRootPath

如何在 asp.net core 中获取项目的根目录。Directory.GetCurrentDirectory() 在 Mac 上似乎无法正常工作

于 2019-05-24T07:51:29.160 回答
0

使用专用位置(例如网络共享)而不是包含可执行代码的文件夹可能会更好地为您服务。将用户数据混合到已部署的代码中会带来很多麻烦:

  • 部署变得更加复杂,因为它们需要考虑用户数据的存在。如果您需要在部署期间删除预先存在的代码,则尤其如此。
  • 如果用户数据是敏感的,开发人员可能会被拒绝访问以读取已部署的代码。这会使故障排除问题变得更加困难。
  • 已部署代码的备份将包含用户数据,这意味着即使没有(代码方面)发生任何变化,它们也总是看起来不同。

当然,这一切都假设生产环境的配置与开发人员的本地机器不同。

于 2019-05-30T21:51:21.567 回答