我有一个网站调用在服务器上运行的ASMX服务(相对较旧)。我正在努力解决有关ajax请求的问题,如果没有超时,则需要大约10-20秒才能触发成功方法。
用户基本上填写一组信息并自定义和图像。完成后,用户单击将图像base64发送到服务器的按钮和带有它的巨大json对象。 (这是用户选择的信息)。无论如何,该服务负责执行以下操作:
这是一个巨大的负载,特别是当使用SMTP对象发送一个而不是两封电子邮件时。
基本上,我们可以异步执行此操作而不会让用户等待“成功!!”消息?
谢谢你们。
答案 0 :(得分:1)
您可以在服务器上实现标准队列任务,存储调用参数并让后台任务从队列中执行作业。
当一份工作和你描述的一样沉重时,这可能是一个非常好的主意。
通过将成功的消息发布到客户端邮件地址,或者写入用户特定的Web应用程序日志(可从其他网页读取)来完成任务。
您应该牢记IIS回收。 如果任务需要在回收开始之前完成,那么繁重的服务器任务可能会延迟回收。有关详细信息,请参阅http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/。
它需要更多工作,但Web服务器可以调用作为Windows服务运行的自托管WCF服务,该服务又执行排队作业。