无法以编程方式重命名目录

时间:2013-12-25 13:01:15

标签: c# asp.net file rename

我有asp.net web表单项目。它创建为“WebSite”并在我的本地iis上运行。 在这个项目中,我创建了一个包含子文件夹的文件夹,其中存储了一些小图片。(〜/ listings / listing1,〜/ listings / listing2 ...)

我可以通过编程方式将新文件添加到此子文件夹,可以删除此子文件夹,但我无法重命名它们。 我试图手动重命名这个子文件夹:当项目没有运行时 - 我能够这样做,当我在Visual Studio中运行debuging时,我甚至无法手动重命名它们。

对于程序化重命名,我使用此代码:     DirectoryInfo rootDir = new DirectoryInfo(oldListingFolderPath);
    rootDir.MoveTo(newListingFolderPath); 这会导致错误“访问路径...被拒绝”。 我已经为NETWORK SERVICES,IIS_IUSERS,USER授予了此文件夹的完全控制权。 我还试图删除应该重命名的子文件夹中的文件/文件夹的只读属性,但这没有帮助。

是否有其他方法可以重命名所需的子文件夹。或者您可以建议任何方法来查找,阻止重命名文件夹的内容。

EDIT1:仅提及子文件夹(〜/ listings / listing1)的路径。当我重命名目录时,我使用文件的完整路径:Server.MapPath(“〜/ listings / listing1”)。很抱歉以前没有提过这个。

EDIT2:我试图以其他方式执行此操作:冷杉我正在创建具有所需新名称的新文件夹,然后我将现有文件夹复制到新文件夹,然后我将删除旧文件夹。这有效。但我仍然不能只重命名现有的文件夹...

2 个答案:

答案 0 :(得分:1)

问题似乎是,当ASP.NET Web应用程序执行时,它仍然具有对该文件夹的引用(这意味着ASP.NET运行时仍在使用)。因此访问冲突错误。

解决方法是将文件夹从~文件夹移动到文件系统中的其他位置,而不是~内。

答案 1 :(得分:1)

〜/ listings / listing1,〜/ listings / listing2 - 是一个虚拟路径。 要处理文件,您需要使用物理路径。

将PhysicalApplicationPath添加到目录路径

string dir_path = HttpContext.Current.Request.PhysicalApplicationPath + "listings\listing1\";

Server.MapPath("/")HttpRuntime.AppDomainAppVirtualPath - 取决于应用类型