C# asp.net:停止响应,继续执行

C# asp.net:停止响应,继续执行,c#,asp.net,C#,Asp.net,在asp.net中,我希望给客户一个即时响应并关闭连接,然后继续执行,这可能会很长,并显示不重要的消息。但这些都不应该让客户看到 我已经尝试了Response.Flush/Close/End、CompleteRequest和匿名委托,但无法使其与任何这些一起工作 样本: 我不建议在ASP.NET应用程序中进行后台线程处理,这不是ASP.NET或IIS的设计目的 我的建议是考虑使用一个单独的服务(例如,一个内部Windows服务),从网站上获取工作并进行处理,这将允许您编写一个更健壮的多线程应用程

在asp.net中,我希望给客户一个即时响应并关闭连接,然后继续执行,这可能会很长,并显示不重要的消息。但这些都不应该让客户看到

我已经尝试了
Response.Flush/Close/End
CompleteRequest
和匿名委托,但无法使其与任何这些一起工作

样本:
我不建议在ASP.NET应用程序中进行后台线程处理,这不是ASP.NET或IIS的设计目的

我的建议是考虑使用一个单独的服务(例如,一个内部Windows服务),从网站上获取工作并进行处理,这将允许您编写一个更健壮的多线程应用程序。您可以使用像/这样的持久消息传递系统向服务传递消息或从服务传递消息(这意味着如果网站发生故障或重新启动,则不会丢失任何工作)


这些类型请求的自然响应是,然后可能会公开一个API供客户端查询以检查进度。

您不应该在HTTP请求中进行冗长的工作。它应该发生在一个可以查询进度的外部服务中。您试图实现的应该是一个AJAX调用。实际上,我只是发送了两封确认邮件。大多数时候都很快。除非我们的邮件服务器又打嗝了。我真的需要单独的后台服务吗?(@Steven:不知道AJAX在这方面有什么帮助。这都是服务器端的。)@Leuch98743如果你想将你的电子邮件服务与你的网站分开,那么是的,它们应该分开。目前,您有一个场景,如果您在请求中做了一些工作,但在发送这些通知时崩溃,那么收件人将永远不会收到这些通知。如果你有一个单独的服务来处理电子邮件,那么你更有可能拥有一个更好的网站吞吐量和一个更具弹性的通知服务。@James:好的。我可能会那样做。因为这更多的是解决我的问题,而不是我在这一页上的问题,所以我将把这个问题留待几天,看看在(可能)将你的答案标记为接受之前是否有新的答案。谢谢
Response.Write("time: "+HttpContext.Current.Session["test"]);

MagicallyEndReponse(); //But how?

Thread.Sleep(10000);                                 //Customer should not experience any delay
HttpContext.Current.Session["test"] = DateTime.Now;  //This should be available when reloading 15s later
Response.Write("BORING INFO!");                      //Customer should not see this