在运行时删除目录

时间:2011-05-14 08:26:07

标签: c# .net asp.net

我只想删除Directory中的project folder

该文件夹包含所有网络sharing authority and permission

当我deleting the folder时出现问题。

文件夹已从serverpath(Virtual Directory)删除。

但我的问题是,当我完成任务并点击任何控件时,它会将我重定向到Login page return url,因为根目录上有secure authentication可用

3 个答案:

答案 0 :(得分:16)

  

应用程序域回收时   子目录被删除,这就是您的会话将丢失并被重定向到登录页面的原因。

有关详细信息,请查看MSDN博客中的这篇文章,并阅读为什么应用程序域可以回收? ASP.NET Case Study: Lost session variables and appdomain recycles

并检查此Deleting ASP.NET 2.0 Application Sub-Directories Shuts Down the AppDomain

答案 1 :(得分:6)

如另一个答案所述,这是因为每当您删除Web应用程序目录结构中的文件夹(即Web应用程序根目录下方)时,Web应用程序都会重新启动。

我发现此问题的唯一解决方案是将数据目录(您创建/删除/修改)移到Web应用程序的根目录/虚拟目录之外。

然后我们在文件系统中创建一个链接(联结),以便该目录显示在虚拟目录中。这可以防止ASP.NET监视数据目录以进行删除操作。

示例:

  • 我们的网站(虚拟目录)位于C:\projectX\website
  • 数据目录(我们创建/删除文件和文件夹的位置)位于C:\projectX\data
  • 然后我们创建一个链接,使数据文件夹可用作C:\projectX\website\data

使用程序Linkd.exe(在Windows资源工具包中提供)使用以下命令创建链接:

linkd c:\projectX\website\data c:\projectX\data

现在C:\projectX\website\data是指向真实数据目录的链接/联结。在您的Web应用程序中,您可以继续工作,就像数据目录是Web应用程序根目录下的物理目录一样。

E.g。在您的网站中,您可以使用以下代码访问数据文件夹:

Server.MapPath("~/data")

您还可以使用Windows文件浏览器并浏览到C:\ projectX \ website \ data。它看起来就像一个真实的目录。

如您所见,您可以继续使用链接数据文件夹,就好像它是Web应用程序目录中的普通文件夹一样。唯一的区别是ASP.NET不会跟踪删除操作的目录,因此不会重新启动应用程序。这意味着,您现在可以根据需要在~/data目录中创建/删除/修改文件夹和文件,而无需重新启动Web应用程序。

答案 2 :(得分:0)

您可以将项目根目录中的文件夹替换为App_Data文件夹吗?