Я перевожу свои сервисы WSE3 на платформу WCF. Клиенты станут устаревшими клиентами WSE3.
Чтобы выполнить некоторые требования, я создал пользовательское поведение службы. Конфигурация (в web.config
) для поведения службы содержит элемент serviceCertificate
.
Это поведение применяется к моему сервису с использованием настройки behaviorConfiguration
. Теперь я хочу вызвать одну службу WCF из другой службы WCF, размещенной в том же IIS 7.5. Поэтому я добавил netTcpBinding
(и netNamedPipeBinding тоже). Когда я вызывал OperationContract другой службы из какой-либо службы WCF, это давало мне ошибку 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
выглядит следующим образом:
Я хочу знать,
- Как использовать netTcpBinding в таком сценарии?
- можно ли использовать два разных поведения для одного и того же сервиса? Если да, то как?
- Если нет, как я могу добиться привязки именованного канала в этом сценарии?
- Почему материал, связанный с сертификатом сервера, может вызывать ошибку
Access is denied
?
Нет внутреннего исключения; просто отказано в сообщении Accedd!