0

我正在将我的 WSE3 服务迁移到 WCF 平台。客户端将是旧版 WSE3 客户端。

为了实现一些要求,我创建了自定义服务行为。服务行为的配置 (in 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错误?没有内在的例外;刚刚接受了拒绝消息!
4

0 回答 0