C# 从一个站点到另一个站点创建文件夹';s文件夹

C# 从一个站点到另一个站点创建文件夹';s文件夹,c#,asp.net-mvc,C#,Asp.net Mvc,我的网站上有一个文件上传文件夹http://mySite/Uploads/ 我想为每个用户创建一个新文件夹并将文件保存到其中。它适用于网站访问者/但我也有一个管理网站。员工应能够在同一目录中上载文件。 CreateDirectory返回一个错误,即它无法处理uri地址。 我正在通过”http://mySite/Uploads/UserId“。我错了吗?我应该使用其他机制吗 我错了吗 是的,您应该将物理文件夹传递给目录.CreateDirectory方法,而不是url。例如: Directory.

我的网站上有一个文件上传文件夹
http://mySite/Uploads/
我想为每个用户创建一个新文件夹并将文件保存到其中。它适用于网站访问者/但我也有一个管理网站。员工应能够在同一目录中上载文件。
CreateDirectory返回一个错误,即它无法处理uri地址。 我正在通过
”http://mySite/Uploads/UserId“
。我错了吗?我应该使用其他机制吗

我错了吗

是的,您应该将物理文件夹传递给
目录.CreateDirectory
方法,而不是url。例如:

Directory.CreateDirectory(Server.MapPath("~/uploads/UserId"));

Server.MapPath
方法应返回如下文件夹:
c:\inetpub\wwwroot\mysite\uploads\userid

必须使用相对于系统根目录的路径。你可以用这个方法


如果有人感兴趣。我们在两个站点的IIS中进行了虚拟文件夹“上载”。右键单击iis=>AddVirtualFolder中的站点,否则我的iis不是英文的。对这两个站点都这样做。它的完整路径指向同一个文件夹,所以我可以使用
Server.MapPath(“~Uploads”)
;在管理站点中,我得到
http://adminSite/Uploads/
,在主站点中是
http://mySite/Uploads/
。如果我通过一个地址上传文件,我总是可以通过另一个地址访问它们。

这正是我从主站点页面上传文件的方法。但我还需要在另一个站点的同一文件夹中执行此操作/如何使用Server.MapPath?这是映射到管理网站,这不是我需要的显然,我被误解了。Server.MapPath(“~/uploads/UserId”)将给我myadminsite\uploads\UserId,我希望它是mymainsite\uploads\UserId,那么您不能使用
Server.MapPath
方法。此方法仅适用于同一应用程序。如果需要访问应用程序外部的文件夹,则必须指定完整路径:
c:\inetpub\wwwroot\mymainsite\uploads\userid。
var uploadsRoot = Server.MapPath("~Uploads");
var userUploadFolder = Path.Combine(UploadsRoot, userId.ToString());
Directory.CreateDirecty(userUploadFolder);