svcutil卡在usernameToken政策上

时间:2014-01-20 21:21:07

标签: wcf web-services soap svcutil.exe

我正在尝试在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

1 个答案:

答案 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格式保持一致。