如何在页面渲染后运行服务器端代码&发出

时间:2010-12-10 08:50:27

标签: asp.net iis browser rendering

我希望你们能帮忙解决这个问题:)

我的页面在浏览器中呈现后,我需要做一些事情。详细地说,我需要发送电子邮件/短信和其他非浏览器相关的东西,但操作需要时间,我不希望我的访问者等待5-8秒的成功消息。

我尝试在页面卸载事件中添加“After Rendering Code”。这似乎有效 - 但仅限于localhost。它不适用于我们的生产服务器。

所以我想,也许这是一些 IIS设置?我还读到它取决于浏览器,如果它会在渲染完成后显示epage - 或者等待整个包结束。

所以我试图在我的“A-R-C”之前用 Response.end 结束包裹,但那只是杀了它。

你们对这方面有什么解释或理论吗?

3 个答案:

答案 0 :(得分:0)

您可能会看到将电子邮件/短信与页面完全异步解耦,例如:通过使用MSMQ队列。通过这种方式,您还可以以更强大的方式处理电子邮件/ SMS,例如如果SMTP服务器关闭或SMS网关忙,则在10分钟内重试。

编辑:Re:MSMQ vs Thread / Threadpool - 在大多数情况下,使用新的工作线程也应该可以正常工作,但是,对于高端可伸缩性,您可能会考虑使用MSMQ或类似的。

看一下这篇SO帖子here

线程池(或线程) - 更快,更容易实施 - 如果应用程序池被回收,则未发送的SMS /消息将丢失 - 将竞争线程(建议使用自定义Threadpool)

MSMQ - 需要做更多工作 - 需要创建一个新的监听程序进程(例如使用WCF)来处理消息 - 除非您可以控制服务器,否则可能难以托管 - 可以是事务性和持久性的 - 即使您的应用程序池被回收或服务器重新启动,未发送的消息也不会丢失。 - 可以对吞吐量进行更多控制 - 限制和延迟交付 - 例如在价格低廉的时候发送短信

答案 1 :(得分:0)

您可以创建一个新线程并在该线程上调用您的方法。

答案 2 :(得分:0)

ThreadPool个主题可以帮助您实现此功能。

相关问题