2015-12-02 49 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)被證明是解決方案。接受指向正確的方向。 –