我如何使用.currentDirectory()在ASP.NET而不是IIS Express的位置中获得项目的根



我有一个正在开发的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

上无法正常工作

通过使用专用位置(例如网络共享(而不是包含可执行代码的文件夹,可以更好地为您提供服务。将用户数据混合到已部署的代码中带有许多头痛:

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

当然,所有这些都假定生产环境的配置与开发人员的本地机器不同。

最新更新