C# 其他信息:“M:/uploads/”是物理路径,但应为虚拟路径

C# 其他信息:“M:/uploads/”是物理路径,但应为虚拟路径,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我需要将上传的文件放在我们的公用驱动器上,该驱动器可以从服务器访问。但它提供了额外的信息:“M:/uploads/”是一个物理路径,但应该是一个虚拟路径 如何访问该路径 例外情况清楚地表明,您不能,事实上,您不需要将MapPath用于绝对路径。如果要在配置中支持绝对路径,则只需检查该值,查看路径是否为绝对路径: string directory = @ConfigurationManager.AppSettings["DirPath"]

我需要将上传的文件放在我们的公用驱动器上,该驱动器可以从服务器访问。但它提供了额外的信息:“M:/uploads/”是一个物理路径,但应该是一个虚拟路径


如何访问该路径

例外情况清楚地表明,您不能,事实上,您不需要将MapPath用于绝对路径。如果要在配置中支持绝对路径,则只需检查该值,查看路径是否为绝对路径:

 string directory = @ConfigurationManager.AppSettings["DirPath"]
                                         .ToString(CultureInfo.InvariantCulture)
 if(!(path.Contains(":") || path.Contains(@"\\") || path.Contains(@"//"))
    // convert virtual to physical path
    directory = Server.MapPath();
 else 
看起来很清楚-MapPath需要虚拟路径,而您提供的是绝对路径-在这种情况下不需要MapPath。回答如下:
String fileName = Path.GetFileNameWithoutExtension(file.FileName);
 String extension = Path.GetExtension(file.FileName);
 var directory = Server.MapPath(@ConfigurationManager.AppSettings["DirPath"]
                                    .ToString(CultureInfo.InvariantCulture));
 string directory = @ConfigurationManager.AppSettings["DirPath"]
                                         .ToString(CultureInfo.InvariantCulture)
 if(!(path.Contains(":") || path.Contains(@"\\") || path.Contains(@"//"))
    // convert virtual to physical path
    directory = Server.MapPath();
 else