C# ASP.NET触发并忘记(单向)Web服务
我在ASP.NET中创建了一个常规的旧ASMX web服务,并在函数调用中添加了SoapDocumentMethod(OneWay=true)],正如我所读到的,这应该使调用异步。然而,我在代码中调用它,它肯定不会使调用异步,我的页面只是坐在那里等待函数完成工作。有什么好处C# ASP.NET触发并忘记(单向)Web服务,c#,asp.net,asynchronous,service,C#,Asp.net,Asynchronous,Service,我在ASP.NET中创建了一个常规的旧ASMX web服务,并在函数调用中添加了SoapDocumentMethod(OneWay=true)],正如我所读到的,这应该使调用异步。然而,我在代码中调用它,它肯定不会使调用异步,我的页面只是坐在那里等待函数完成工作。有什么好处 [SoapDocumentMethod(OneWay = true)] [WebMethod(EnableSession = true)] public void UpdateAccounts() { //do work
[SoapDocumentMethod(OneWay = true)]
[WebMethod(EnableSession = true)]
public void UpdateAccounts()
{
//do work
}
//call the function
GlobalServices service = new GlobalServices();
service .UpdateAccounts()
您仍然必须使用Async方法进行调用。在这种情况下,您应该调用
service.UpdateAccountsAsync()
。是否返回值?OneWay的文档声明“fire and forget”web方法不能返回值或具有out参数
除了OneWay的文档说明web服务将在执行服务方法之前立即返回HTTP状态代码202之外,因此我认为使服务函数异步化不会有什么帮助。这是我对它如何工作或应该如何工作的理解。不,不返回任何内容。请尝试删除函数,然后查看web服务是否返回。如果是这样的话,那么我想您确实需要异步启动您的服务功能,正如Erich所说。我唯一能想到的是,“EnableSession”属性以某种方式干扰了异步行为。试着把它也去掉。