我开发了一个使用文件的模块。使用代字号在主题中提供文件是可以的,但这似乎不适用于控制器,我使用System.IO.File
或Move()
等Delete()
方法处理文件。现在我使用绝对路径,但它们不可行 - 模块应该在不同的机器上使用,并且仍然存储在单个存储库中。
如何找到在每种情况下我应该将哪个根用于根相关路径?如果没有通用规则,如何在管理上传/下载/查看文件时找到它?还是更复杂?
我的文件存储在:(SolutionRoot)/Orchard.Web/Media/Default/_FooBar/
我已尝试将所有文件夹作为相对根,但它不起作用。
答案 0 :(得分:1)
在我看来HostingEnvironment.MapPath
可能就是你要找的东西。
如果不是,那么您可以向执行程序集询问其位置并从那里找出相应的信息:
var codeBaseUrl = Assembly.GetExecutingAssembly().CodeBase;
var filePathToCodeBase = new Uri(codeBaseUrl).LocalPath;
var directoryPath = Path.GetDirectoryName(filePathToCodeBase);