【发布时间】:2015-12-04 17:03:31
【问题描述】:
我正在用 ASP.NET/C#(.NET 4.6,VS 2015)编写一个 Web 服务,它需要:
- 接收 XML 数据,
- 解析 XML 数据,
- 使用解析后的数据调用单独的 SOAP 服务,
- 接收来自 SOAP 服务的响应,
- 处理来自 SOAP 服务的响应,并
- 将处理后的 XML 发送回调用方 应用
我承认我在编写 Web 服务方面是个新手。 1-3个完成。 5-6 将是微不足道的,因为我已经将“Hello World”类型的响应发送回调用应用程序。
我被困在#4。响应信封似乎无处可寻——调用外部 SOAP 服务没有错误,具有相同数据的相同 SOAP 调用使用 Fiddler 和 Postman 发送响应,因此外部 SOAP 服务很好。
关于#4,我添加了对现有 SOAP 服务的服务引用。我可以调用 Web 服务,但在调试和查看代理类时,我看不到任何访问响应信封或响应信封内的任何内容的方法。
我知道这是非常基本的,所以一定有我遗漏的东西。有没有人可以指点我的教程?几天来我一直在寻找解决方案,但没有任何乐趣。
我是否需要编辑服务引用才能返回数据?如果是这样,我该怎么做?
再次抱歉新手问题;非常感谢您。
总结:我调用的 SOAP 服务工作正常并且响应正确,但我找不到如何从 SOAP 响应信封中实际检索数据;调试时,我什至在任何地方都看不到 SOAP 响应信封。我确定我遗漏了一些非常基本的东西。
编辑:这是前面要求的一些代码,并有进一步的解释:
string fieldValue = _fieldPrefix + fieldContents + _fieldSuffix;
ExternalSoapClient soapClient = new ExternalSoapClient(_endpointName);
soapClient.Execute(fieldValue);
ExecuteResponseBody responseBody = new ExecuteResponseBody();
string executeResult = responseBody.ExecuteResult;
我想我要问的问题是:我很确定我错过了将响应与执行联系起来的步骤。 SOAP 方法称为“Execute”,只有上面显示的一个字符串字段。
【问题讨论】:
-
一般来说,您不会直接通过 WCF 访问 SOAP 响应信封。这些方法将返回一个类型(简单类型,如 string 或 int 或复杂类型),该类型被反序列化为底层 .NET 类型(即,对于字符串,您将获得一个字符串,对于复杂类型,您将上课)。您可以发布一些代码和您所看到的一些示例吗?
-
感谢蒂姆的回复,请在上面的 OP 末尾查看我的编辑。
标签: c# asp.net web-services wcf soap