2011-05-14 53 views
9

我只是想删除project folder中的Directory在运行时删除目录

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

问题出在我deleting the folder

serverpath(Virtual Directory)中删除文件夹。

但我的问题是,当我完成了我的任务,点击任何控制它将我重定向到Login pagereturn url上仍然有根目录下的secure authentication

+4

我真的不明白你的问题。你能改述最后一句话吗? – 2011-05-14 09:45:43

回答

16

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

欲了解更多详情,请查看这篇文章从MSDN博客和读为什么一个应用程序域回收?从这里 ASP.NET Case Study: Lost session variables and appdomain recycles

,并检查这一个Deleting ASP.NET 2.0 Application Sub-Directories Shuts Down the AppDomain

+0

谢谢阿赫塔尔我明白这个问题,但你能告诉我解决这个问题吗?我该如何克服这种情况 – Vir 2011-05-21 13:52:00

0

从项目的根可以代替文件夹放到App_Data文件夹?

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应用程序根目录下的物理目录一样。

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

Server.MapPath("~/data") 

而且你还可以使用Windows文件浏览器,浏览到C:\ projectX创建\网站\数据。它看起来就像一个真实的目录。

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