我有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:我试图以其他方式执行此操作:冷杉我正在创建具有所需新名称的新文件夹,然后我将现有文件夹复制到新文件夹,然后我将删除旧文件夹。这有效。但我仍然不能只重命名现有的文件夹...
答案 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
- 取决于应用类型