C# Web服务-异步执行和状态更新

C# Web服务-异步执行和状态更新,c#,javascript,asp.net,soap,asynchronous,C#,Javascript,Asp.net,Soap,Asynchronous,我正在尝试开发一个使用Javascript和SOAP调用的web服务。它是一个有状态的服务,用户可以在一定时间内登录,因此我使用Context.Session来存储必要的数据。 用户(登录后)调用一个冗长的操作,需要定期接收状态更新。我遇到的问题是,我的服务一次只能执行一个调用(即WebMethod a()),在a()完成执行之前,我无法调用WebMethod B()。 有两个问题: 接收状态更新的最佳方法是什么?服务器可以自动将数据回发到客户端,还是轮询GetStatus服务方法? 如何实现异

我正在尝试开发一个使用Javascript和SOAP调用的web服务。它是一个有状态的服务,用户可以在一定时间内登录,因此我使用Context.Session来存储必要的数据。 用户(登录后)调用一个冗长的操作,需要定期接收状态更新。我遇到的问题是,我的服务一次只能执行一个调用(即WebMethod a()),在a()完成执行之前,我无法调用WebMethod B()。 有两个问题: 接收状态更新的最佳方法是什么?服务器可以自动将数据回发到客户端,还是轮询GetStatus服务方法? 如何实现异步。在web服务内部执行,以便我可以从同一web服务调用不同的、有时完全不相关的web方法?
谢谢

使用JQuery,您可以执行以下操作:

function CallMethodA() {
        $.ajax({
            type: "POST",
            url: "WebService.asmx/MethodA",
            // whatever else ...
            success: function (response) {
                //handle success
            }
        });
    CallMethodB();
}


function CallMethodB() {
        $.ajax({
            type: "POST",
            url: "WebService.asmx/MethodB",
            // whatever else ...
            success: function (response) {
                //handle success
            }
        });
    }

我不知道你为什么说在方法A完成之前不能调用方法B。如果从Javascript调用这两个方法,则几乎同时执行这两个方法不会有任何问题。我将发布一个关于如何做的“粗略”的想法。谢谢伊卡洛斯,不管怎样,我都是这样做的。看起来我必须检查服务器配置,因为运行web服务的应用程序池的“最大工作进程数”显然设置为1。这不应该阻止我产生子线程,是吗?我想它已经被。您可以向服务器提交多个请求,但它们将按顺序处理。@Acolyte我不这么认为。您可以向服务器发送多个请求,这些请求将被并行处理。是的,有一个限制(我相信“标准”是四个),但这个限制肯定不是一个,除非在服务器或客户端有某种特殊的配置。要证明我所说的话,最简单的方法是启动firebug,并查看在任何给定网站的同一域中并行处理了多少请求。我关心的不是客户端,而是服务器。W2K3上有一个旧的IIS6,我怀疑有什么东西阻止它首先创建线程。@Acolyte:很可能是这样。服务器可以限制来自同一IP的并发连接数。我在Apache中见过这种设置,我相信IIS也可以做同样的事情。