Я настраиваю пользовательскую службу ClaimsAuthenticationManager для моей службы wcf. Теперь я узнал, что метод ClaimsAuthenticationManager.Authenticate выполняется для каждого вызова wcf. Вместо этого я хочу, чтобы он выполнялся один раз за сеанс, чтобы избежать лишних накладных расходов.Сделать вызов WCF ClaimsAuthenticationManager.Authenticate только один раз за сеанс
Согласно Microsoft:
Менеджер аутентификации претензий, как правило, вызывается один раз за сеанс, со следующими исключениями: Для обеспечения транспортной безопасности Жетоны присутствующих на транспортном уровне будет ссылаться на аутентификацию претензий раз за вызов , даже если сеансы присутствуют.
Источник: https://msdn.microsoft.com/en-us/library/ee748487.aspx
Поскольку мой обычай связывания не использует транспортной безопасности я не вижу причин, почему ClaimsAuthenticationManager.Authenticate выполняется за вызов.
Кто-нибудь знает, есть ли дополнительные требования, которые необходимо выполнить, чтобы этот метод вызывался один раз за сеанс? Большое спасибо за любые предложения.
ФОС конфигурации связывания:
<behaviors>
<serviceBehaviors>
<behavior name="defaultBehavior">
<serviceDebug includeExceptionDetailInFaults="True" />
<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="200" maxConcurrentInstances="200" />
<serviceCredentials useIdentityConfiguration="true" />
<serviceAuthorization principalPermissionMode="Always" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netNamedPipeBinding>
<binding name="ServiceNamedPipeBinding" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxReceivedMessageSize="134217728" maxBufferPoolSize="134217728" maxBufferSize="134217728" />
</netNamedPipeBinding>
<customBinding>
<binding name="TcpLoadBalanced" receiveTimeout="00:05:00" sendTimeout="00:05:00">
<security authenticationMode="SecureConversation" requireSecurityContextCancellation="true">
<secureConversationBootstrap authenticationMode="SspiNegotiated"/>
</security>
<binaryMessageEncoding>
<readerQuotas maxArrayLength="2147483647" />
</binaryMessageEncoding>
<tcpTransport listenBacklog="200" maxBufferPoolSize="134217728" maxReceivedMessageSize="134217728" maxBufferSize="134217728">
<connectionPoolSettings leaseTimeout="00:00:00" maxOutboundConnectionsPerEndpoint="0" />
</tcpTransport>
</binding>
</customBinding>
</bindings>
У меня уже есть этот параметр на моей службе, это не поможет. – driAn