C# 虚拟路径问题

C# 虚拟路径问题,c#,C#,代码专家您好, 我正在将一些文件上载到虚拟目录。对于虚拟目录,我给出的路径如下 "/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"; 它可以在我的本地服务器上正常工作,但在live server上无法正常工作。它没有在live server中上载文件 如果我把它改成 "~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument

代码专家您好, 我正在将一些文件上载到虚拟目录。对于虚拟目录,我给出的路径如下

"/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/";
它可以在我的本地服务器上正常工作,但在live server上无法正常工作。它没有在live server中上载文件

如果我把它改成

"~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/";

那么它会起作用吗?如果没有,我应该如何将其映射到虚拟目录?

请阅读~waht方法上的文档。你会发现第二种方法总是有效的,而第一种方法不是。首先假设文件夹为/Uploads(在web服务器根目录下)。

阅读~waht方法上的文档。你会发现第二种方法总是有效的,而第一种方法不是。Te首先假设文件夹为/Uploads(在web服务器根目录下)。

使用server.MapPath函数


使用Server.MapPath函数


+1到@MarkisT。建议您也让框架为您进行组合:


如果你仍然有问题;建议您检查本地和服务器上的完整路径,以了解与虚拟路径和绝对路径相关的情况。服务器上也可能存在安全问题,尤其是在应用程序目录之外进行写入时。当然,在这种情况下会有例外。

+1到@MarkisT。建议您也让框架为您进行组合:


如果你仍然有问题;建议您检查本地和服务器上的完整路径,以了解与虚拟路径和绝对路径相关的情况。服务器上也可能存在安全问题,尤其是在应用程序目录之外进行写入时。当然,在这种情况下可能会出现异常。

我尝试过使用它,但它现在在我的本地计算机中不起作用。没有上传任何图像。当您尝试上载文件时是否会返回特定错误?事实上,我正在使用web处理程序文件将图像写入虚拟目录,当我像您所说的那样给出图像时,不会调用虚拟目录,但当我使用像“~/Uploads/”+DatabaseName+“/”+REOID+“/”+这样的命令时,会调用虚拟目录“外部文档”+“/";我试过用这个,但现在在我的本地电脑里不起作用。没有上传任何图像。当您尝试上载文件时是否会返回特定错误?事实上,我正在使用web处理程序文件将图像写入虚拟目录,当我像您所说的那样给出图像时,不会调用虚拟目录,但当我使用像“~/Uploads/”+DatabaseName+“/”+REOID+“/”+这样的命令时,会调用虚拟目录“ExternalDocument”+“/”,谢谢你告诉我,第二种方法也可以在live上使用吗?谢谢你告诉我,第二种方法也可以在live上使用吗?我收到错误“方法“Combine”没有重载需要4个参数。在.NET Framework 4+中,在3.5及以下版本中,你必须使用多个Path.Combine语句(每个2个参数)或者手工梳理。关于检查Server.MapPath结果的建议仍然有效-了解您实际写入的位置是解决问题的关键。我发现错误“方法“Combine”没有重载需要4个参数。在.NET Framework 4+中,在3.5及以下版本中,您必须使用多个Path.Combine语句(每个参数2个)或手工梳理。关于检查Server.MapPath结果的建议仍然有效-了解您实际写入的位置是解决问题的关键。
Server.MapPath("~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/");
using System.IO;
using System.Web;

var path = Path.Combine("~/Uploads", DataBaseName, REOID, "ExternalDocument");
var fullPath = Server.MapPath(path);