我有一个正在开发的ASP.NET核心项目,并且正在使用LitedB作为数据库解决方案。为了实例化数据库,我需要提供一个URI,以便程序知道在哪里创建数据库。
通常,我会做类似 System.Environment.CurrentDirectory()
之类的事情来找到我所使用的当前目录并修改它,但是该命令的结果证明是 C:program filesIIS Express
或类似的东西。基本上,当前目录指向IIS Express的位置。
相反,我想获取我的ASP.NET项目的根部,该项目包含我的控制器文件夹,AppSettings.json,bin和obj文件夹。
我需要使用什么命令来获取代表此位置的字符串?出于明显的原因,我不想使用硬编码字符串。
如果您无法访问DI,则可以尝试:
Assembly.GetExecutingAssembly().Location
如果您可以访问DI,请尝试以下操作:
注入IHostingEnvironment
并致电environment.ContentRootPath
如何在ASP.NET Core中获取项目的根目录。Directory.getCurrentDirectory((似乎在Mac
通过使用专用位置(例如网络共享(而不是包含可执行代码的文件夹,可以更好地为您提供服务。将用户数据混合到已部署的代码中带有许多头痛:
- 部署需要考虑用户数据的存在,因此变得更加复杂。如果您需要在部署期间删除预先存在的代码,则尤其如此。
- 如果用户数据敏感,则可能会拒绝开发人员访问读取已部署的代码。这可能会使故障排除问题变得更加困难。
- 部署代码的备份将包含用户数据,这意味着即使没有(代码(更改(代码(,它们也总是不同的。
当然,所有这些都假定生产环境的配置与开发人员的本地机器不同。