在运行时删除目录

Vir*_*Vir 9 .net c# asp.net

我只想删除Directory其中的内容project folder.

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

问题出现在我身边deleting the folder.

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

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

Muh*_*tar 16

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

有关更多详细信息,请查看MSDN博客中的这篇文章,并阅读为什么应用程序域可以回收?从这里 ASP.NET案例研究:失去的会话变量和appdomain回收

并检查这一个删除ASP.NET 2.0应用程序子目录关闭AppDomain


M4N*_*M4N 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
Run Code Online (Sandbox Code Playgroud)

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

例如,在您的网站中,您可以使用以下代码访问数据文件夹:

Server.MapPath("~/data")
Run Code Online (Sandbox Code Playgroud)

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

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