我正在ASP.NET领域中寻找类似Server.MapPath的东西,以便将Assembly.GetExecutingAssembly().CodeBase的输出转换为带有驱动器号的文件路径。
下面的代码适用于我尝试过的测试用例:
private static string ConvertUriToPath(string fileName)
{
fileName = fileName.Replace("file:///", "");
fileName = fileName.Replace("/", "\\");
return fileName;
}
似乎.NET Framework中应该有一些东西会更好-我只是没有找到它。
4条答案
按热度按时间svdrlsy41#
尝试查看Uri.LocalPath属性。
0x6upsns2#
我找了很多答案,最流行的答案是使用Uri.LocalPath。但是如果路径包含“#”,System.Uri无法给予正确的LocalPath。详细信息是here。
我的解决方案是:
x6492ojm3#
你能用
Assembly.Location
吗?wsewodh24#
位置可以与CodeBase不同。例如,对于ASP.NET中的文件,它可能在c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET下解析。请参阅“Assembly.CodeBase与Assembly.Location”http://blogs.msdn.com/suzcook/archive/2003/06/26/57198.aspx