我们公司认为它使用的是有效的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名称空间声明。当我将其更改为正确的soap 1.1命名空间时,WCF会识别该请求并开始处理该消息。
以下是我们熟悉的正确声明: 的xmlns:CFG-ENV = “http://schemas.xmlsoap.org/soap/envelope/”
当我将这个名称空间声明用于典型的soapenv前缀时,这里是cfg-env,WCF识别请求消息。
有没有办法更改WCF以识别这个不正确的soapenv名称空间声明,这样我的消息就会被识别而不做修改?
鉴于此要求,我将不得不更改请求消息cfg-env命名空间声明。对我来说,保留请求消息并且没有任何改变以使其起作用将是有帮助的。
是否可以在WCF中应用备用名称空间声明,以及如何适应这种情况?
答案 0 :(得分:0)
不,那是不可能的。贵公司所生产的只不是SOAP。
答案 1 :(得分:0)
这是可能的,但它不是配置。
看一下这篇文章:
http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix
您可以在此处找到如何在服务器端执行此操作,但如果您使用ApplyClientBehavior而不是ApplyDispatchBehavior,则可以配置相同的MessageFormatter以在WCF客户端应用程序上运行。