Конструктор вызывается при каждом вызове метода WCF HTTPS - PullRequest
2 голосов
/ 18 мая 2011

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

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

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

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

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

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

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

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

Спасибо.

1 Ответ

4 голосов
/ 18 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...