DirectoryInfo& Path.GetDirectoryName - Exists方法在存在时返回false

时间:2010-12-13 18:50:10

标签: c# asp.net

如果没有创建,我想检查文件夹是否存在。我确定这个文件夹存在,但出于某种原因,当我用“存在”方法检查时,我得到“假”。

我认为唯一的原因可能是因为W:驱动器? 我将此应用程序移至生产站点,即使在那里它返回false。

当我在我的localhost和服务器“W:/ Webs / ASPPages / cropper / uploads”上键入Windows资源管理器时,它会打开此文件夹。所以我的localhost和IIS服务器有W:mapping。

进行测试我试图创建文件夹然后它说无法找到路径...

userFolderName = @"W:/Webs/ASPPages/cropper/uploads"

//I also tried @"W:\Webs\ASPPages\cropper\uploads\"

//I also tried @"W:\Webs\ASPPages\cropper\uploads" 

//I also tried "W:\\Webs\\ASPPages\\cropper\\uploads" 



DirectoryInfo dirInfo = new DirectoryInfo(userFolderName);

if (dirInfo.Exists) //returns false

var diPath = new DirectoryInfo(Path.GetDirectoryName(userFolderName));

if(diPath.Exists)  //returns false

3 个答案:

答案 0 :(得分:1)

尝试在你的代码中使用它

userFolderName = Server.MapPath("/uploads");

答案 1 :(得分:1)

驱动器号安装在每个用户或每个会话上(如在登录会话中,而不是在ASP.NET会话中)。运行网站的帐户可能没有映射驱动器号。使用UNC或登录应用程序池帐户并持久安装w:驱动器。

答案 2 :(得分:1)

我的观点/经验是,上传的内容既不应该是您网站的一部分,也不应该在您的IIS网站目录中。首先,当你拥有源代码控制权时,它会严重混乱。第二个问题是由于安全性,这对那些IIS文件夹非常严格,因此最终会遇到当前情况。

现在可能的解决方案。在其他地方,单独的驱动器或其他目录上创建uploads文件夹,但要确保它不在IIS文件夹中。然后进入IIS,在左侧树控件中选择您的网站,并设置一个指向您刚刚创建的文件夹的虚拟目录。现在您可能不需要执行任何其他操作,但如果需要,可以设置任何其他权限,新的上载文件夹和DirectoryInfo.Exists()将按预期正常工作。

祝你好运!