Это моя конфигурация сервиса в web.config:
<binding name="statefulSessionWithUsernameOverTransport">
<security authenticationMode="SecureConversation"
requireSecurityContextCancellation="False" allowInsecureTransport="True">
<secureConversationBootstrap authenticationMode="UserNameOverTransport"/>
</security>
<binaryMessageEncoding />
<httpTransport />
</binding>
<service name="com.example.FooService"
behaviorConfiguration="usernamePasswordAuthBehavior">
<endpoint contract="com.example.FooService.IFooService"
address="custom" binding="customBinding"
bindingConfiguration="statefulSessionWithUsernameOverTransport" />
</service>
Я устанавливаю allowInsecureTransport = True, потому что в производственном режиме служба будет работать за балансировочным ограничителем нагрузки SSL.Вызов службы из моего клиента .Net 4.0 работает без проблем, но попытка обновить ссылку на службу в VS2010 всегда приводит к ошибке:
System.ServiceModel.Channels.TransportSecurityBindingElement Ошибка: сбой экспорта политики безопасности,Привязка содержит TransportSecurityBindingElement, но нет элемента привязки безопасности транспорта, который реализует ITransportTokenAssertionProvider.Экспорт политики для такого экспорта политики не поддерживается. *
Я понимаю, что он пытается мне сказать - в основном это то, что я отключил транспортную безопасность для привязки, которая требует его, чтобы избежать компрометацииучетные данные путешествуют по проводам.Но в этом и заключается смысл allowInsecureTransport .Может ли быть так, что прокси-генератор просто не знает об этом атрибуте?
Обновление:
Похоже, что генератор wsdl действительно не может справиться с атрибутом.Мне пришлось вернуться к уровню безопасности сообщений и самоподписанному сертификату для разработки.Преимущество использования Message Security заключалось в том, что он мог использовать Cassini for Development вместо полноценного IIS.
<wsHttpBinding>
<binding name="wshttpDevelopmentBinding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>