C# C目录。使用物理路径创建

C# C目录。使用物理路径创建,c#,C#,我正在尝试使用directory.create创建一个目录,它将传递物理路径,而不是服务器的相对路径。MapPath new FileInfo(ConfigurationManager.AppSettings["ServerPath"].ToString() + "/" + file.Id).Directory.Create(); Web.config: <add key="ServerPath" value="C:/inetpub/wwwroot"/> 但它不起作用。有什么想法

我正在尝试使用directory.create创建一个目录,它将传递物理路径,而不是服务器的相对路径。MapPath

new FileInfo(ConfigurationManager.AppSettings["ServerPath"].ToString() + "/" + file.Id).Directory.Create();
Web.config:

<add key="ServerPath" value="C:/inetpub/wwwroot"/>
但它不起作用。有什么想法吗? 我正在尝试将文件复制到此目录,但返回以下错误:

复制失败:找不到路径的一部分 “C:/inetpub/wwwroot/103/filename.png”。嗯

因为/103文件夹不是在C:/inetpub/wwwroot下创建的。 提升权限是可以的

string serverPath = ConfigurationManager.AppSettings["ServerPath"].ToString();

new FileInfo(serverPath + "/" + file.Id).Directory.Create();
这种方法的问题是,首先创建一个对象,然后使用属性访问该对象的目录

在本例中,FileInfo对象指向文件C:/inetpub/wwwroot/103。注意,我说的是文件。该文件的父目录是C:/inetpub/wwwroot,它是您调用的DirectoryInfo对象

因为wwwroot文件夹显然已经存在,所以实际上什么都没有做。但是您实际上想要创建的子目录103也没有创建

要解决这个问题,首先需要将C:/inetpub/wwwroot/103路径解释为一个目录。只需直接创建DirectoryInfo对象即可:

new DirectoryInfo(serverPath + "/" + file.Id).Create();
由于您实际上正在使用该文件夹中的文件filename.png执行某些操作,因此最好从相反的方向开始,从该文件及其文件信息开始:

var file = new FileInfo(Path.Combine(serverPath, file.Id, "filename.png"));

// create directory of that file; this does nothing if it already exists
file.Directory.Create();

// write to the file path, etc.
// …

为什么不起作用?你会遇到什么错误?在这一行之后,我试图将一个文件复制到这个方向,但我得到一个错误,这个目录的一部分不存在。创建了这个目录吗?从这个路径创建一个DirectoryInfo不是更有意义吗?你确定路径是正确的吗?至于错误,它与Directory.Create无关。发布实际代码我看到这个问题和它的评论有很多不一致之处,OP没有做出任何改进。然而,在这个问题上只有一次接近票数的投票。为了避免猜测答案,我们能暂时关闭这个吗?