0
我需要在將結果返回給用戶後調用C#web服務中的一些函數,因此我打算使用OneWay方法。在c中調用異步web服務#
我創造了在同一項目2個web服務如下: 1:主叫服務:
public class Caller : System.Web.Services.WebService {
[WebMethod]
public string HelloWorld() {
var bg = new Background();
bg.HelloWorldBG();
return "Hello World";
}
}
第二服務在後臺調用:
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples", SessionMode = SessionMode.Required)]
public class Background : System.Web.Services.WebService {
[SoapDocumentMethod(OneWay = true)]
[WebMethod(EnableSession = true)]
public void HelloWorldBG()
{
Thread.Sleep(60000);
var file = @"D:\testHello.txt";
File.WriteAllText(file, "Hello World");
}
}
但是當我調用HelloWorld()時,它在完成HelloWorldBG()的執行之前不會返回()
當然,因爲你只是打電話像任何其他類的方法(的HelloWorld)(從編譯器的角度來看,它的基類是否是Web服務並不重要)。使用線程池異步調用它(或.NET 4+以上的任務) –
有關執行異步Web服務的所有詳細信息,請參閱此鏈接http://www.codeproject.com/Articles/121345/Asynchronous-Communication-in-a-WCF -服務 –