Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net C#对Web服务方法的异步调用_C#_Asp.net_Web Services_Asynchronous - Fatal编程技术网

Asp.net C#对Web服务方法的异步调用

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分钟内完成数字处理,或者可能更长,并调

我有以下一个场景:

1) 用户通过Asp.net网页上载文件。
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服务调用该服务。像这样的东西应该分发。