Конструктор вызывается при каждом вызове метода WCF HTTPS

У меня странная проблема (или может быть странная только для меня)

У меня был WCF WebSrvice, размещенный с помощью wsHttpBinding. (HTTP)

Все было хорошо.

Я переключился на basicHttpBinding, потому что хотел получить к нему доступ с PHP. Я также сделал свой сервис HTTPS, так что теперь его базовая привязка HttpBinding через HTTPS.

Служба работает нормально (почти так, как ожидалось), и методы тоже работают так, как ожидалось.

Однако я заметил, что в последней конфигурации (wsHttpBinding, HTTP), когда клиент вызывал первый метод, который использовал мой конструктор службы, а затем для всех остальных методов он больше никогда не вызывался. (что было хорошо, так как я выполнял некоторый код в конструкторе, который я хотел запустить только один раз, когда клиент начинает использовать службу)

Но в новой конфигурации (basicHttpBinding, HTTPS) конструктор вызывается для каждого выполняемого метода.

Это нормально, или я что-то не так делаю? Если это нормально, то, прежде всего, что мне делать с кодом, который я хочу запускать один раз за сеанс (клиент). И если у вас есть время, то почему так, что по HTTP поведение разное, а по HTTPS другое? (или это из-за разницы в привязках?)

Спасибо.


person user402186    schedule 18.05.2011    source источник


Ответы (1)


По умолчанию InstanceContextMode для службы WCF равно PerSession, и это поддерживается через HTTP используемой привязкой. Однако HTTPS предотвращает такое поведение сеанса по умолчанию, поэтому вы видите поведение PerCall (которое каждый раз создает новый объект службы). См. это сообщение о том, как это исправить.

person dlev    schedule 18.05.2011