(环境.NET 4.0 C#WCF和ASP.NET)
所以这就是我想要发生的流程:
我在数据库中添加了一个名为'UploadProcessing'的表,它保存了上传的状态(以及其他内容),我编写了逻辑来处理后端上传,WCF服务调用该上传。在处理上传时,它会上传“UploadProcessing”记录以及当前工作状态,直到最终完成。
我首先从WCFClient.ProcessUpload(args...);
事件中调用Commit_Click()
开始,但刚刚处理完上传并等到它完成后再启用AJAX更新状态计时器,该计时器始终显示已经完成(因为它有)。然后我尝试异步调用相同的方法,但它似乎以相同的方式运行,因为页面不会完全回发到客户端(使用启用的计时器),直到异步完成处理程序得到它的响应,实际上导致相同的'完成了“对用户的回复。”
所以我礼貌而尊重地询问社区你是如何通过WCF解雇并忘记'ProcessUpload()
这个方法,这样它可以在后台执行它的事情,而页面可以自由地回发和监控其状态?也许是WCF方面的某种ThreadPool解决方案?或者也许是一个奴隶服务,它监视“UploadProcessing”表以查找待处理的上传,然后以这种方式处理它们?
提前感谢您的任何建议!
答案 0 :(得分:1)
建议将您的WCF方法设为OneWay操作,例如
[OperationContract(IsOneWay = true)]
public void ProcessUpload(...)
{
//etc
}
答案 1 :(得分:0)
听起来你正在以正确的方式解决它,也许你的WCF服务的异步设置不太正确? this question的答案有一些有用的链接,这是Calling WCF Service Operations Asynchronously上的MSDN页面。
更新:看起来this blog post几乎完全涵盖您的问题,看起来像是一个很好的资源。