C# ASP.NET IIS站点中长时间运行的操作/线程

C# ASP.NET IIS站点中长时间运行的操作/线程,c#,asp.net-mvc,multithreading,iis,C#,Asp.net Mvc,Multithreading,Iis,线程系统如何在ASP.NET MVC上工作 如果我在一个请求上产生了一个新线程,那么它就完成了一个特定的任务。当请求结束或超时时,该线程将被终止吗 比如说, 我有一个Action方法,它接收一个csv文件,需要解析并保存到数据库中。现在正确的方法是运行一个执行这些请求的服务,但是在我的例子中,这个导入只会每月发生一次,对我们来说,维护一个24/7运行的服务不值得 是否有一种服务可以在IIS环境中运行,而不受HTTP请求状态的影响 您将始终受制于应用程序池的生存期设置。如果在任何时候都没有其他请求

线程系统如何在ASP.NET MVC上工作

如果我在一个请求上产生了一个新线程,那么它就完成了一个特定的任务。当请求结束或超时时,该线程将被终止吗

比如说,

我有一个Action方法,它接收一个csv文件,需要解析并保存到数据库中。现在正确的方法是运行一个执行这些请求的服务,但是在我的例子中,这个导入只会每月发生一次,对我们来说,维护一个24/7运行的服务不值得


是否有一种服务可以在IIS环境中运行,而不受HTTP请求状态的影响

您将始终受制于应用程序池的生存期设置。如果在任何时候都没有其他请求进入IIS,而IIS也由应用程序池提供服务,则当应用程序池关闭时,您的请求将停止。您有两个选择:增加应用程序池的生存期或使用windows服务路径。您可以在上传之前编写延长池生命周期的脚本,然后将其重新编写为更短、更易于管理的长度

您将始终受制于应用程序池的生存期设置。如果在任何时候都没有其他请求进入IIS,而IIS也由应用程序池提供服务,则当应用程序池关闭时,您的请求将停止。您有两个选择:增加应用程序池的生存期或使用windows服务路径。您可以在上传之前编写延长池生命周期的脚本,然后将其重新编写为更短、更易于管理的长度

您将始终受制于应用程序池的生存期设置。如果在任何时候都没有其他请求进入IIS,而IIS也由应用程序池提供服务,则当应用程序池关闭时,您的请求将停止。您有两个选择:增加应用程序池的生存期或使用windows服务路径。您可以在上传之前编写延长池生命周期的脚本,然后将其重新编写为更短、更易于管理的长度

您将始终受制于应用程序池的生存期设置。如果在任何时候都没有其他请求进入IIS,而IIS也由应用程序池提供服务,则当应用程序池关闭时,您的请求将停止。您有两个选择:增加应用程序池的生存期或使用windows服务路径。您可以在上传之前编写延长池生命周期的脚本,然后将其重新编写为更短、更易于管理的长度

继续讨论Josh的答案。该线程不会在请求处理结束后立即终止。但如果应用程序池的w3wp由于某种原因被终止,它可能会被终止。从Josh所说的原因来看,如果出现异常而未经代码处理,也可能会发生这种情况,而且应用程序池可能会因为几个原因而循环使用

windows服务是一种解决方案。在一个项目中,我使用AppFabric将应用程序池设置为永不回收并始终保持打开状态。这对我来说非常有效,对于特定于客户的故事,也可能是适合您的解决方案


查看更多信息。

扩展Josh的答案。该线程不会在请求处理结束后立即终止。但如果应用程序池的w3wp由于某种原因被终止,它可能会被终止。从Josh所说的原因来看,如果出现异常而未经代码处理,也可能会发生这种情况,而且应用程序池可能会因为几个原因而循环使用

windows服务是一种解决方案。在一个项目中,我使用AppFabric将应用程序池设置为永不回收并始终保持打开状态。这对我来说非常有效,对于特定于客户的故事,也可能是适合您的解决方案


查看更多信息。

扩展Josh的答案。该线程不会在请求处理结束后立即终止。但如果应用程序池的w3wp由于某种原因被终止,它可能会被终止。从Josh所说的原因来看,如果出现异常而未经代码处理,也可能会发生这种情况,而且应用程序池可能会因为几个原因而循环使用

windows服务是一种解决方案。在一个项目中,我使用AppFabric将应用程序池设置为永不回收并始终保持打开状态。这对我来说非常有效,对于特定于客户的故事,也可能是适合您的解决方案


查看更多信息。

扩展Josh的答案。该线程不会在请求处理结束后立即终止。但如果应用程序池的w3wp由于某种原因被终止,它可能会被终止。从Josh所说的原因来看,如果出现异常而未经代码处理,也可能会发生这种情况,而且应用程序池可能会因为几个原因而循环使用

windows服务是一种解决方案。在一个项目中,我使用AppFabric将应用程序池设置为永不回收并始终保持打开状态。这对我来说非常有效,对于特定于客户的故事,也可能是适合您的解决方案


查看更多信息。

退房。实现起来非常简单,允许您在请求周期之外启动要处理的任务。实现起来非常简单,允许您在请求周期之外启动要处理的任务。实现起来非常简单,允许您在请求周期之外启动要处理的任务。实现起来非常简单,允许您在请求周期之外启动要处理的任务。我喜欢这样的想法。这不是一个大文件,我无法想象它将需要超过4-5分钟。没有办法