2015-12-02 51 views
0

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

如何在每种情况下找到哪个根用于根相对路径?如果没有通用规则,如何在管理上传/下载/查看文件时找到它?还是更复杂?

我的文件存储在:(SolutionRoot)/Orchard.Web/Media/Default/_FooBar/我试过所有的文件夹作为相对根,它不起作用。

回答

1

在我看来,HostingEnvironment.MapPath可能是你在找什么。

如果不是,那么你可以从那里寻求它的位置和数字的东西执行的程序集出来:

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

可能是答案。现在我没有时间充分利用它,但我明天可能会接受它。 –

+0

我花了一段时间才意识到如何使用它(它是静态的!),但[HostingEnvironment.MapPath(“〜”)](http://stackoverflow.com/q/275781/1801588)被证明是解决方案。接受指向正确的方向。 –