0

我们公司认为它正在使用有效的 SOAP。但是,他们将这个命名空间声明用于 soapenv 命名空间前缀:

xmlns:cfg-env="http://www.co.com/schemas/cfg-env/"

这体现在 xml/soap 请求消息中,如下所示:

<cfg-env:Envelope xmlns="http://www.co.com/schemas/CFX/" xmlns:cfg-           env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfg-hdr="http://www.co.com/schemas/cfg-hdr/">
<cfg-env:Header>

开箱即用的 WCF 无法识别此肥皂命名空间声明。当我将其更改为正确的soap 1.1 命名空间时,WCF 会识别请求并开始处理消息。

这是我们都熟悉的正确声明:xmlns:cfg-env="http://schemas.xmlsoap.org/soap/envelope/"

当我将此命名空间声明用于典型的 soapenv 前缀时,这里是 cfg-env WCF 识别请求消息。

有没有办法改变 WCF 来识别这个不正确的 soapenv 命名空间声明,这样我的消息就可以在不修改的情况下被识别?

鉴于这是一项要求,我将不得不更改请求消息 cfg-env 命名空间声明。让请求消息保持完整而不做任何更改对我来说是有帮助的,这样才能正常工作。

是否可以在 WCF 中应用替代命名空间声明,以及如何适应这种情况?

4

2 回答 2

0

这是可能的,但它不是一种配置。

看看这篇文章:

http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix

在这里您可以找到如何在服务器端执行此操作,但如果您使用 ApplyClientBehavior 而不是 ApplyDispatchBehavior,您可以配置相同的 MessageFormatter 以在您的 WCF 客户端应用程序上运行。

于 2014-01-08T10:07:16.767 回答
0

不,那是不可能的。贵公司生产的根本不是 SOAP。

于 2013-04-17T20:49:11.383 回答