Asp.net C#对Web服务方法的异步调用
我有以下一个场景: 1) 用户通过Asp.net网页上载文件。Asp.net C#对Web服务方法的异步调用,c#,asp.net,web-services,asynchronous,C#,Asp.net,Web Services,Asynchronous,我有以下一个场景: 1) 用户通过Asp.net网页上载文件。 2) 网页将文件传递到FileFlowManagerBLL,后者检查文件并将其上载到数据库 3) 我想调用一个后台web服务方法,顺便说一句,它在同一个项目中,这样web服务就可以从上传的文件开始大量的数字处理工作。调用web服务方法后,我希望在不等待控件完成的情况下将控件返回给用户,并显示一条消息,说明文件已成功更新,并且一旦数据处理完成,用户将收到一封电子邮件。 4) Web服务在30-60分钟内完成数字处理,或者可能更长,并调
2) 网页将文件传递到FileFlowManagerBLL,后者检查文件并将其上载到数据库
3) 我想调用一个后台web服务方法,顺便说一句,它在同一个项目中,这样web服务就可以从上传的文件开始大量的数字处理工作。调用web服务方法后,我希望在不等待控件完成的情况下将控件返回给用户,并显示一条消息,说明文件已成功更新,并且一旦数据处理完成,用户将收到一封电子邮件。
4) Web服务在30-60分钟内完成数字处理,或者可能更长,并调用相关代码向用户发送电子邮件
我需要一些指导来实现步骤3,即如何异步调用web服务方法,以便将控件返回给用户,并且用户可以在进行数字运算时查看web应用程序的其他页面。一种方法是将WCF服务作为Windows服务托管。您的初始web服务(检查文件后)可以将其写入特定目录。然后在Windows服务中,您可以创建一个FileSystemWatcher,在该目录中查找新文件,如果找到任何文件,可以调用您的处理方法。这是一个相当普遍的问题,但我正在努力查找最近的副本。相关区域中的一个已经过时了。是的,我也试图找到它,但找不到最新版本!这里有一篇有用的文章——c#ASMX web服务已经存在,因此异步调用它的方法(以某种方式)会更容易。我相信一定有办法。关于如何从.net客户端页面异步调用方法,然后等待结果,有很多示例。但是,您的示例略有不同。您不希望等待长时间运行的流程完成,以便向web页面发送响应。您需要检查文件,启动长时间运行的进程,然后在长时间运行的进程完成之前返回到客户机。我强烈建议您使用一个不同的自托管WCF Windows服务来运行这个漫长的过程,并让您的web服务调用该服务。像这样的东西应该分发。