Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сессии в WCF сервисах

279
19 ноября 2009 года
bave
456 / / 07.03.2004
Здравствуйте,
пытаюсь создать WCF сервис c привязкой wsHttpBinding и поддержкой сессий и получаю следующее исключение: Контракту требуется свойство Session, однако привязка "WSHttpBinding" его не поддерживает или этого не позволяет неправильная настройка.

Кто нибудь знает это wsHttpBinding сессии действительно не поддерживает или
я привязку не правильно конфигурирую?

Если поддерживает, то подскажите где моя ошибка в конфигурировании привязки?

вот код:
Код:
Uri uri = new Uri("http://localhost:8008/SchoolOnlineService)");

           
 mServiceHost = new ServiceHost(typeof(SchoolOnline), uri);
           
WSHttpBinding binding = new WSHttpBinding(SecurityMode.None);

binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;

mServiceHost.AddServiceEndpoint(typeof(ISchoolOnline), binding, uri);

           
mServiceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
   
mServiceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new SmsDatebookInfo.SchoolOnlineService.SchoolOnlineServiceUserNamePasswordValidator();

mServiceHost.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.Custom;
           
mServiceHost.Authorization.ExternalAuthorizationPolicies = new ReadOnlyCollection<IAuthorizationPolicy>(new List<IAuthorizationPolicy> { new SchoolOnlineAuthorizationPolicy() });

ServiceMetadataBehavior serviceMetadataBehaviour = new ServiceMetadataBehavior();
           
serviceMetadataBehaviour.HttpGetEnabled = true;          

mServiceHost.Description.Behaviors.Add(serviceMetadataBehaviour);              

mServiceHost.Open();


В SessionMode соответственно ставлю значение Required:
 
Код:
[ServiceContract(Namespace = "http://localhost/SmsDatebookInfo.SchoolOnlineService", SessionMode = SessionMode.Required)]
public interface ISchoolOnline
{
 ...
}


И значение InstanceContextMode Per-Session:
 
Код:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Single)]
public class SchoolOnline : ISchoolOnline
{
...
}


Т.е. как создать сервис с привязкой, чтобы тип аутентификации был по имени пользователя и паролю, без шифрования и сертификатов (они мне не нужны) и чтобы сессии подерживались?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог