Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Распределённые приложения и сеть > Обрыв защищенной WCF session |
Автор: AleXGray 19.5.2011, 16:31 | ||||
Написал я защищенный сервис WCF, на локальном компе работал. Проблемы возникли, когда выложил на сервер в IIS 7.5 При объеме данных, который передается меньше чем за 4 минуты, сервис отрабатывает правильно. При увеличении объема данных, либо при ухудшении интернета данные передаются больше 4 минут и сервис вылетает с ошибкой. При отключении секьюрити (Message Mode="None"), при длительной передаче данных ошибки не возникает. текст ошибки
+
все таймауты, которые в binding накручивал. В любом случае ни один из них и близко не равняется 4 минутам. Повторюсь, без секьюрити все работает. Если я правильно понял, причина в том, что сессия устаревает пока после ее установления данные наконец загрузятся и потом эти данные просто не признаются за подлинные. Вопрос в том, как это поправить? |
Автор: jonie 21.5.2011, 11:51 |
1) зачем защищать сами сообщения, если можно защитить весь канал (SSL\TLS) ? Это быстрее (cpu не так кушается) и проще (тем более в IIS - два тыка мышкой чтобы применить сертификат). 2) что в логах WCF на сервере? (http://msdn.microsoft.com/en-us/library/ms730064.aspx) 3) прочтите тут: http://stackoverflow.com/questions/968939/wcf-session-timeout |
Автор: AleXGray 21.5.2011, 12:17 | ||||
Я не знаю ни одного timeout, ни в wcf ни в httpRuntime где 4 минуты выставлено по умолчанию. Эти 4 минуты разрешения на передачу защищенного контекста работают как часы. 1. Transport несовместим с UserName аутентификацией. Поэтому было выбрано Message. Быстродействие и нагрузка на процессор меня вполне удовлетворяют на данном этапе. TransportWithMessage буду пробовать, но если я правильно понимаю вопрос, ничего ровным счетом от этого измениться не должно. Я так понимаю что должно работать и при Message, она ж для чего то да сделана. 2. Логи сервера я как раз и привел. 3. reliable я не использую вообще. Наверное приведу конфиги, чтобы не было лишних вопросов Клиент:
Сервер:
|
Автор: AleXGray 21.5.2011, 13:13 |
несовместим при wsHttp, наверное нужно было сказать. Но Вы правы, в принципе на ws свет клином не сошелся, попробую настроить по Вашим ссылкам. |
Автор: AleXGray 22.5.2011, 17:35 |
The HTTP request is unauthorized with client authentication scheme 'Basic'. The authentication header received from the server was 'Basic realm="manor-medical.info"'. Если же ставить TransportWithMessageSecurity и message UserName, то получается странная вещь: логин пароль не проверяется вообще. Подходит любой. |
Автор: AleXGray 22.5.2011, 20:35 |
Все таки пришлось использовать TransportWithMessageCredential, но с basicHttpBinding. Идея отойти от ws была верной. Спасибо. Хотя первоначальный вопрос и остался, но теперь он теоретический а не "горящий". |