我有一个我目前无法连接的Web服务的WSDL。 Web服务有一个名为ExecuteCommand
的方法,它返回CommandResult
CommandResult看起来像:
string ResultMessage;
DataSet ResultDataset;
bool ResultSuccess;
我已经添加了WebService作为服务引用,但由于我目前无法访问实际的WebService,我需要处理一个XML文件(我被告知)WebService将返回的XML响应我称之为ExecuteCommand
方法。
如果WebService正在运行,我只会执行以下操作:
MyWebService.ServiceDataInterfaceSoapClient ws = new ServiceDataInterfaceSoapClient();
MyWebService.CommandResult result = ws.ExecuteCommand();
相反,我想做类似的事情:
MyWebService.CommandResult result = //Load Result from XML file which contains the XML response that ws.ExecuteCommand would return.
我不知道该如何解决这个问题。我尝试创建XmlSerializer
类型CommandResult
,但我在第一行得到了XML解析错误。我希望有人能指出我如何做到这一点的基本例子。
答案 0 :(得分:1)
听起来你正在尝试重新创建WCF通常为你做的事情。创建一个新的本地WCF服务可能更简单,该服务实现了SvcUtil为您创建的ServiceContract接口。在本地服务代码中,您只需新建一个MyWebService.CommandResult对象,并从提供的文件中提供正确的值。这样就不需要修改客户端代码来使用存储在文件中的XML响应。即使您尝试使用非基于WCF的服务,这种方法也可以正常工作。只需为WSDL提供SvcUtil并使用basicHttpBinding来模拟任何Basic Profile(asmx和一些基于java的)服务。有关如何创建ServiceDataInterfaceSoapClient对象的更多细节将会有所帮助。
答案 1 :(得分:1)
我最终搞清楚了以下内容并且正在做我需要的事情:
XmlSerializer xml = new XmlSerializer(typeof(CommandResult),"XMLNamespaceFromWSDL");
CommandResult cr;
using (Stream stream = new FileStream("CommandResult.xml", FileMode.Open))
cr = (CommandResult)xml.Deserialize(stream);