1

我得到了一个asmx 端点,无论好坏,该方法什么都不返回:

使用svcutil.exe生成代理和配置后,我调用服务并执行方法:

// connect
WinnerSiteServiceSoapClient client = new WinnerSiteServiceSoapClient();
// send
client.CreateCompetitor("1", "2", "3", "4", "5", 6);
// disconnect
client.Close();

但是该方法CreateCompetitor,正如服务文档所说,返回void我如何确保该方法被成功调用和回答?

启动Fiddler,我可以看到我得到了HTTP 200响应,但是,我怎样才能从代理对象中得到它呢?

4

1 回答 1

0

简而言之:没有异常意味着请求成功。

如您所知,代理类抽象出向服务发送请求的 HTTP 部分。这也意味着您将找不到与服务器返回的 HTTP 状态相对应的属性(除非您调整生成的代理类)。

当你通过代理类调用那个 void WebMethod 并且调用没有失败时,说明服务器已经成功接收到了。如果服务器抛出异常(可能告诉您某些参数无效——尽管它应该返回 false 或某些 XML 说明,但这是设计问题),那么您的调用将失败并出现 System.ServiceModel.FaultException。

如果存在网络问题并且请求无法以某种方式到达服务器,那么您还会收到异常:System.ServiceModel.EndpointNotFoundException。

这两个异常都是由为您处理 HTTP 的代理类引发的。

于 2012-09-07T09:41:38.577 回答