关于以下代码示例:
string baseLocation = HttpContext.Current.Server.MapPath("/");
const string templateName = @"//temp//ExportTemplate.xlsx";
const string generatedLocation = @"{0}//temp//{1}";
var fileName = string.Format("Export-{0}.xlsx", DateTime.Now.Date.ToString("yyyy-MM-dd"));
var newFile = String.Format(generatedLocation, baseLocation, fileName);
File.Copy(baseLocation + templateName, newFile, true);
我们在生产服务器和本地开发环境(通过 IIS 中的站点)上使用它。两者都运行 IIS 7.5。该代码在生产中正常工作,但在本地开发中引发错误:
Access to the path 'C:\Path\To\Site\//temp//Export-2013-01-29.xlsx' is denied.
该文件是在本地开发人员上正确创建/复制的,但我猜由于路径中的斜杠不正确,它会出错。应用程序池标识对“临时”文件夹具有完全访问权限。
这带来了几个问题:
- 在这种情况下,'//' 对路径有什么作用?我知道 '\' 是逃避反斜杠的方法,但 '//' 没有意义。
- 使生成的路径在生产服务器上正常工作但在我的本地开发中失败的两个环境的配置是否存在差异?