文件I / O在ASP .Net C#Worker Threads中不起作用

时间:2012-05-24 13:20:43

标签: asp.net c#-4.0 file-io

好吧......我觉得绝对愚蠢。原因如下:

我一直在使用我2年前写过的一些库函数。埋藏了几层深,我正在使用这些功能来帮助建立我想要的路径:

System.Web.HttpContext.Current.Request.ApplicationPath System.Web.HttpContext.Current.Server.MapPath

而不是使用它:

HttpRuntime.AppDomainAppPath

System.Web.HttpContext.Current肯定是null,因为没有http上下文。而且,当然,没有例外被抛出,因为我正在诱捕并忽略它们。

你不知道我盯着我的项目花了多少时间,想知道到底出了什么问题!

请原谅我浪费每一个人的时间。这太尴尬!!!

1 个答案:

答案 0 :(得分:3)

不鼓励在ASP.NET应用程序中生成线程。我知道它可以在技术上完成,但是你需要考虑很多问题。建议的最佳做法是创建Windows服务以运行后台任务。然后,您的ASP.NET应用程序可以向服务发出请求,该服务在后台处理它们。

更新了参考文献

来自multi threading on asp.net的评论:

  

关于在ASP.NET站点上使用后台处理的一个警告。 IIS可以在任何给定时刻回收应用程序,并在执行此操作时终止任何正在运行的后台线程。因此无法保证您的线程池线程将成功运行。如果这是一个问题,最好使用Windows服务进行后台处理。

此外,SO用户Mr. Disappointment会详细介绍here,并说:

  

Windows服务旨在长期运行,如果出现问题,您通常会比您的个人服务更担心。