我需要测试对外部SOAP服务的异步调用。我有一个Main程序,它构建对Web服务的请求(它最终将成为Windows服务,但为了调试目的,保持简单)。 Main程序在循环内多次调用服务。我需要动态构建SOAP请求,所以我有一个类来执行此操作,在该类中我有一个异步方法,如下所示:
public async Task<WebServiceResponse> ExecuteWebService()
{
var request = BuildRequest(); //non-async: builds dynamic SOAP request
var retrieveDataClient = new ExternallyProvidedInterfaceClient();
retrieveDataClient.Open();
return await retrieveDataClient.RetrieveDataAsync(request);
}
我的问题是:当我调试上面的方法时,它会在调用外部客户端构造函数时返回(第二行)。永远不会调用Open()方法,永远不会进行实际的SOAP调用。
我是异步编程的新手...有人可以告诉我出错的地方并解释为什么方法在返回到返回语句之前返回吗?
答案 0 :(得分:0)
我的愚蠢。我在已经提供InterfaceClient的服务上运行了SvcUtil。这创建了客户端的本地副本。当我执行构造函数时,两者之间的混淆。删除了InterfaceClient类的本地副本,一切都很顺利。