3) True , wsHttpBinding и wsDualHttpBinding являются единственными HTTP-привязками, поддерживающими сеансы
5) False , для проверки подлинности вызывающих абонентов не обязательно иметь какую-либо защиту на транспортном уровне (например, SSL / HTTPS). Единственное требование - настроить IIS для включения встроенной проверки подлинности Windows для виртуального каталога. Тогда в WCF у вас есть три возможности включить этот сценарий:
a) Использовать защиту на транспортном уровне для wsHttpBinding с учетными данными Windows (HTTPS)
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="SecurityEnabledWsHttp">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
b) Использовать защиту на уровне сообщений в wsHttpBinding с учетными данными Windows (HTTP)
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="SecurityEnabledWsHttp">
<security mode="Message">
<message clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
в) Запустите службу в режиме совместимости ASP.NET и включите Аутентификация Windows в ASP.NET (HTTP)
<system.web>
<authentication mode="Windows" />
</system.web>
Обратите внимание, что в a и b вы получите доступ к идентификатору вызывающего абонента из службы следующим образом:
OperationContext.Current.ServiceSecurityContext.WindowsIdentity
6) True , защита на транспортном уровне должна быть включена на wsHttpBinding для использования HTTPS
7) False , Reliable Sessions - это конкретная реализация Reliable Messaging для сеансов WCF. Надежный обмен сообщениями - это стандартная спецификация WS- *, разработанная для гарантии доставки сообщений в ненадежной сети. Вы можете использовать сеансы WCF без надежного обмена сообщениями и наоборот. Сессии включены в контракте на обслуживание с этим атрибутом:
[ServiceContract(SessionMode=SessionMode.Required)]
public interface IMyService {
// ...
}
Также помните, что для поддержания состояния между вызовами службы вам необходимо явно включить соответствующий режим экземпляра при реализации контракта на обслуживание:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class MyService : IMyService {
// ...
}
В WCF существует два вида сеансов: Безопасные сеансы и Надежные сеансы . Настройка по умолчанию для wsHttpBinding и netTcpBinding заключается в использовании защищенных сеансов.
Для wsHttpBinding это достигается с помощью защиты на уровне сообщений с использованием клиентских учетные данные, которые являются настройкой по умолчанию для привязки.
Вместо этого для netTcpBinding сеанс устанавливается на уровне транспорта с использованием средств протокола TCP.
Это означает, что простое переключение на wsHttpBinding или netTcpBinding включит поддержку сеансов WCF.
Альтернативой является использование Reliable Sessions . Это должно быть явно включено в конфигурации привязки и устраняет требование использования безопасности сообщений для wsHttpBinding. Так что это будет работать:
<bindings>
<wshttpbinding>
<binding name="ReliableSessionEnabled">
<reliablesession enabled="True" ordered="False" />
<security mode="None" />
</binding>
</wshttpbinding>
</bindings>
8) False , надежные сеансы используются независимо от настроек безопасности канала связи.
Для более подробного объяснения взгляните на эту статью .