如何将netTcpBinding与消息级安全性一起使用?

时间:2011-08-09 10:16:02

标签: wcf wcf-configuration servicebehavior wcf-behaviour

我正在将我的WSE3服务迁移到WCF平台。客户将成为传统的WSE3客户端。

为了达到某些要求,我创建了自定义服务行为。服务行为的配置(在web.config中)包含serviceCertificate元素。

此行为适用于使用behaviorConfiguration设置的服务。现在我想从同一IIS 7.5中托管的另一个WCF服务调用一个WCF服务。所以我添加了netTcpBinding(以及netNamedPipeBinding)。当我从任何WCF服务调用另一个服务的OperationContract时,它曾经给我Access is denied.错误。我删除了该服务的behaviorConfiguration设置,然后netTcpBinding(和netNamedPipeBinding)工作。

配置如下:

<services>
          <service name="Services.AuthorizationService" behaviorConfiguration="LegacyBehavior">
            <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" >
            <endpoint
              name="AuthorizationService"
              address=""
              binding="wsHttpBinding"               contract="ServiceContracts.IAuthorizationService" />
            <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
                   binding="netNamedPipeBinding"                   contract="ServiceContracts.IAuthorizationService"
                   name="AuthorizationNamedPipeEndpoint"/>  


                   

web.config中的服务行为配置为:

<behavior name="LegacyBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
          <serviceAuthorization
            principalPermissionMode="Custom"
            serviceAuthorizationManagerType="Legacy.AuthorizationManager,Legacy.Services" >
          <serviceDebug
            httpHelpPageEnabled="true"
            includeExceptionDetailInFaults="true" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceCredentials>
            <serviceCertificate
              findValue="CN=WSE2QuickStartServer"
              storeLocation="LocalMachine"
              storeName="My"
              x509FindType="FindBySubjectDistinguishedName" />
            <issuedTokenAuthentication
              audienceUriMode="Always"
              certificateValidationMode="PeerOrChainTrust"
              revocationMode="NoCheck"
              trustedStoreLocation="LocalMachine"
              samlSerializerType="Legacy.TokenSerializer, Legacy.Services"
              allowUntrustedRsaIssuers="false">
              <allowedAudienceUris>
                <add allowedAudienceUri="http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue/SAML" />
              </allowedAudienceUris>
            </issuedTokenAuthentication>
          </serviceCredentials>
        </behavior>

netTcpBinding的绑定配置如下:

                

我想知道,

  1. 如何在这种情况下使用netTcpBinding?
  2. 我可以为同一服务使用两种不同的行为吗?如果是,怎么样?
  3. 如果不是,如何在这种情况下实现命名管道绑定?
  4. 为什么与服务器证书相关的内容会导致Access is denied错误? 没有内在的例外;刚刚被Accedd拒绝了消息!

0 个答案:

没有答案