如何在 Orchard 和 System.IO.File 方法中使用(根)相对路径?

How to use (root) relative paths with Orchard and System.IO.File methods?

我开发了一个处理文件的模块。使用波浪号在主题中提供文件是可以的,但这似乎在控制器中不起作用,我在控制器中使用 System.IO.File 方法处理文件,如 Move()Delete()。现在我使用绝对路径,但它们不可行 - 该模块应该在不同的机器上使用并且仍然存储在一个存储库中。

如何找到在每种情况下我应该将哪个根用于 root-relaive 路径?如果没有通用规则,如何在管理 upload/download/viewing 个文件时找到它?还是更复杂?

我的文件存储在:(SolutionRoot)/Orchard.Web/Media/Default/_FooBar/我已经尝试将所有文​​件夹作为相对根目录,但没有用。

在我看来,HostingEnvironment.MapPath 可能就是您要找的东西。

如果不是,那么您可以向正在执行的程序集询问它的位置,然后从那里找出答案:

var codeBaseUrl = Assembly.GetExecutingAssembly().CodeBase;
var filePathToCodeBase = new Uri(codeBaseUrl).LocalPath;
var directoryPath = Path.GetDirectoryName(filePathToCodeBase);