C# 在一个控制器方法中运行异步操作并获得该操作';结果是另一个
我有一个长期运行的操作,您可能会在我的另外两个问题中阅读(供您参考,这里是和) 在整个交易的开始,project公开了一个表单,用户应该在其中指定关于XML文件的所有必要信息,并上传XML文件本身。在该方法中,所有用户输入的数据都被捕获并转到处理此类文件的WCF服务。控制器仅获取了此类处理的任务id。 然后用户被重定向到进度条页面,定期检索任务完成状态,刷新进度条 我的问题来了。当XML文件的处理结束时,我如何返回结果并将其显示给用户 我知道HTTP是无状态协议,但有一种cookie机制可以帮助解决这种情况。当然,我可能只是将处理结果保存到某个临时位置,比如WCF服务器中的静态类,但服务的负载很高,所以它会占用所有提供的内存 换句话说,我希望将任务传递给WCF服务(使用netNamedPipeBinding),并尽可能快地接收结果。我想将临时保存的结果转移到某个缓冲区,并等待客户机将其收集回来C# 在一个控制器方法中运行异步操作并获得该操作';结果是另一个,c#,asp.net,asp.net-mvc,wcf,http,C#,Asp.net,Asp.net Mvc,Wcf,Http,我有一个长期运行的操作,您可能会在我的另外两个问题中阅读(供您参考,这里是和) 在整个交易的开始,project公开了一个表单,用户应该在其中指定关于XML文件的所有必要信息,并上传XML文件本身。在该方法中,所有用户输入的数据都被捕获并转到处理此类文件的WCF服务。控制器仅获取了此类处理的任务id。 然后用户被重定向到进度条页面,定期检索任务完成状态,刷新进度条 我的问题来了。当XML文件的处理结束时,我如何返回结果并将其显示给用户 我知道HTTP是无状态协议,但有一种cookie机制可以帮助
就我而言,使用临时缓冲区的不是服务端而是客户端:
using (XmlProcessingServiceClient client = new XmlProcessingServiceClient())
{
client.AnalyzeXmlAsync(new Task { fileName = filePath, id = tid });
client.AnalyzeXmlCompleted += (sender, e) =>
{
System.Web.HttpContext.Current.Application.Lock();
// here is I just use single place for all clients. I know it is not right, it is just for illustrating purposes.
System.Web.HttpContext.Current.Application["Result"] = e;
System.Web.HttpContext.Current.Application.UnLock();
};
}
老实说,我没有真正了解wcf服务器之类的部分,但我想我可以给你更多的抽象答案。可以肯定的是:
BHD老实说,我没有真正了解wcf服务器之类的部分,但我想我可以给你更多的抽象答案。可以肯定的是: