0

嗯……我觉得自己很愚蠢。原因如下:

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

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

而不是使用这个:

HttpRuntime.AppDomainAppPath

System.Web.HttpContext.Current 肯定会为空,因为没有 http 上下文。而且,当然,没有任何异常被抛出,因为我陷入了困境并忽略了它们。

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

请原谅我浪费了大家的时间。这太丢人了!!!

4

1 回答 1

3

不鼓励在 ASP.NET 应用程序中生成线程。我知道这在技术上是可以做到的,但是您必须考虑很多问题。推荐的最佳实践是创建一个 Windows 服务来运行您的后台任务。然后,您的 ASP.NET 应用程序可以向服务发出请求,该服务在后台处理它们。

更新了参考资料

来自对 asp.net 上多线程的评论:

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

此外,SO 用户Mr. Disappointment在这里进行了详细介绍,他说:

Windows 服务旨在长期运行,如果出现问题,您通常需要担心的不仅仅是您的单个服务。

于 2012-05-24T13:24:39.090 回答