我正在尝试在C#中构建一个WCF客户端以使用eMedNy's SOAP Web服务。 WSDL 位于:https://service100.emedny.org:9047/MHService?wsdl
当我尝试运行svcutil
时,我收到此错误:
警告:未导入以下政策声明:
的XPath:// WSDL:定义[@的targetNamespace =http://org/emedny/mhs/
] / WSDL:结合[@名称= 'MHS']
断言:
<dpe:summary xmlns:dpe='http://www.datapower.com/extensions'> .. </dpe:summary>
<sp:SupportingTokens xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'> .. </sp:SupportingTokens>
据我所知,这与WCF缺少对usernameToken
消息密码的支持有关。
如何继续克服此问题并设置代理和app.config
?
答案 0 :(得分:1)
在磁盘上本地保存WSDL和任何引用的WSDL /架构。 (您可以通过“import”和“include”元素找到引用的文件。)将它们保存到磁盘后,解析引用:例如,如果导入标记是http://www.server.com/1.WSDL并将其保存到磁盘上1.wsdl然后将导入标记更改为指向本地磁盘。然后从WSDL中删除所有策略标记(实际上只有一个 - 根策略标记及其所有子项)。现在,您应该能够从本地磁盘上的根WSDL添加服务引用。
编辑:根据您的评论,现在问题不是生成代理而是配置安全性。根据您的链接,这是一个相当复杂的安全配置来设置。尝试将this link视为基本绑定。然后include this使二进制令牌显示为序列化(可能需要更改InclusionMode和ReferenceStyle)。可能需要进行一些调整才能获得所需的确切格式。在任何阶段,使用Fiddler或WCF日志来查看您的请求如何与所需的SOAP格式保持一致。