【发布时间】:2012-08-10 11:40:17
【问题描述】:
我正在使用 EPi 服务器提供商:
<add virtualPath="~/WorkplaceFiles/" physicalPath="C:\Temp Files\Workplaces"
name="workplaceFiles" type="EPiServer.Web.Hosting.VirtualPathNativeProvider,EPiServer"
showInFileManager="true" virtualName="workplaceUploadDocuments" bypassAccessCheck="true" maxVersions="5" />
以下是提供者的定义:
VirtualPathUnifiedProvider provider =
VirtualPathHandler.GetProvider(DocumentConstants.WorkplaceFiles) as VirtualPathUnifiedProvider;
我的问题来了 - 如果我定义一个字符串,例如:
string path = "2999/Documents/document.txt"
path = String.Concat(provider.VirtualPathRoot, path);
FileInfo file = new FileInfo(path);
FileInfo 将无法找到此文件,因为它使用的是虚拟路径而不是物理路径。
如何获取物理路径,以便我能够找到带有FileInfo 的文件?
// When I'm on this line I would like my path string to be "C:\Temp Files\Workplaces\2999\Documents\document.txt"
FileInfo file = new FileInfo(path);
【问题讨论】:
-
您是否尝试过编写
System.Path.Combine方法而不是String.Concat(.., .. );?如果将physicalPath="C:\Temp Files\Workplaces"+string path = "2999/Documents/document.txt"(斜杠替换为反斜杠)结合起来会怎样? -
@aleksey.berezan -
System.IO.Path.Combine,但除此之外是的,值得一提。 -
使用 Path.Combine 和 Strin.Concat 我获得了相同的“MyProjectName/WorkplaceFiles/2999/Documents/document.txt”。对于 FileInfo 部分,我需要从 C:\Temp Files\... 开始的完整路径
标签: c# path virtualpathprovider episerver-6