【问题标题】:File I/O Not functioning in ASP .Net C# Worker Threads文件 I/O 在 ASP .Net C# 工作线程中不起作用
【发布时间】:2012-05-24 13:20:42
【问题描述】:

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

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

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

而不是使用这个:

HttpRuntime.AppDomainAppPath

System.Web.HttpContext.Current 肯定会为 null,因为没有 http 上下文。而且,当然,没有抛出异常,因为我在捕获和忽略它们。

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

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

【问题讨论】:

  • 贴一些代码可能会有所帮助。
  • 你确定它没有抛出异常吗?您使用的是哪个线程库?

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


【解决方案1】:

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

已更新参考文献

来自multi threading on asp.net的cmets:

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

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

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

【讨论】:

  • 你有这方面的参考吗?
  • @tzerb 我应该如何在 ASP.NET 4 中执行长时间运行的任务? - 你不需要。如果您需要更多说服力,只需了解应用程序池的生命周期即可。顺便说一句,很好的参考,查理。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多