如何在WCF Web服务中实现策略?

时间:2016-04-15 20:21:04

标签: c# web-services wcf wsdl policy

我想创建一个与给定Web服务相同的Web服务,具体取决于服务描述语言。 我设法创建了相同的服务,除了这部分元数据:

<wsp:Policy wsu:Id="BasicHttpsBinding_policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
那是什么?以及如何在服务描述语言中生成它?

1 个答案:

答案 0 :(得分:0)

我认为您正在搜索&#34;外部政策附件&#34;这里描述:http://www.w3.org/TR/ws-policy-attach/#ExternalPolicyAttachment

要在WSDL文档上使用<wsp:Policy..,首先应在Web配置文件中使用HTTPS绑定。

所以,如果您使用https,那么您可以添加 服务节点中的基地址:

 <baseAddresses>
     <add baseAddress="http://yourdomain.com/"/>
     <add baseAddress="https://yourdomain.com/"/>
 </baseAddresses>

然后添加基本的HTTPS绑定节点:

 <basicHttpsBinding>
    <binding name="BasicHttpsBinding_Name">
      <security>
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </basicHttpsBinding>

你也应该像以下那样删除终点:

 <endpoint address="" binding="basicHttpsBinding" 
            bindingConfiguration="BasicHttpsBinding_Name"
            contract="NameSpace.Name" name="BasicHttpsBinding_Name" />

通过编译您的服务,策略节点将出现在您的WSDL上 另见一些解决方案here
我希望它可以帮助你。