ASP.NET: 如何在无需应用程序重启的情况下编写可 Web 访问的临时文件

3
我的ASP.Net应用程序在请求过程中经常会不可预知地重启,破坏我的状态、会话数据等。我确定问题是由一个控件造成的,该控件在创建离bin目录近的Temp文件夹时写入和删除一些文件,因此Web目录看起来像这样:
bin
Temp
....
Default.aspx    
web.config

ASP.Net显然对Temp文件夹内部的更改的反应方式与其对bin或web.config内部更改的反应方式相同 - 它会重新启动应用程序。

我可以通过将Temp移动到站点目录之外来部分解决问题。这样,每次写入/删除临时文件时,应用程序不会重新启动,因此这一部分效果很好。问题在于,Temp目录中的某些文件应该是可以通过Web访问的,例如生成的图像等。


因此,我的问题实际上有三个:

  1. 即使更改不是在bin目录中进行的,ASP.Net应用程序是否应该重新启动,还是我的配置有问题?
  2. 在哪里以及如何创建一个临时文件夹,使其可以通过Web访问但不会导致应用程序重新启动?
  3. 如何从代码或web.config(在IIS和ASP.Net开发服务器中)关闭对目录更改的重新启动?

App_Data文件夹是一个很好的位置。 - Tuan
@Tuan:Baz1nga的回答适用于它吗?它位于Web应用程序文件夹下,因此服务器如何对其中的写入\重命名做出反应? - Dyppl
1
不,它对此免疫(请参见http://petesbloggerama.blogspot.com/2008/02/aspnet-writing-files-vs-application.html)。否则,它将无法用于存储SQL Express数据文件。 - Tuan
1
我进行了更多的研究,根据这个网站:http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx,即使在App_Data中创建和删除文件夹也会导致重新启动。但是,仅创建和删除文件是可以的。 - Tuan
@Tuan 是的,我在图像目录上进行了删除文件操作,但从未注意到重启问题。 - Aristos
1个回答

1

根据我的理解,这是你的问题的答案:

  1. 当一个或多个内容目录中的文件更改过多时,ASP.NET会重新启动应用程序。有关应用程序重启发生的更多信息,请阅读:http://programming360.blogspot.in/2009/04/what-causes-application-restart.html
  2. 您可以在同一台计算机上的任何位置或不同的计算机(文件共享)上创建临时文件夹,只要IIS用户可以访问该文件夹,它就应该正常工作。您需要考虑的唯一事情是当文件夹位于另一台计算机上时的延迟。
  3. 我不认为您可以控制应用程序重启,这完全由IIS控制。 您可能想阅读此SO问题:ASP.NET restarts when a folder is created, renamed or deleted

“同一台计算机上的任何文件夹或不同计算机上的文件夹(文件共享)”如何对浏览器可用?这是其中一个要求:临时文件夹中的文件必须可以下载。那么,URL会是什么样子呢? - Dyppl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接