Переменная сеанса в приложении WCF - PullRequest
6 голосов
/ 15 марта 2010

Мне нужно использовать или стимулировать очень простой объект сеанса внутри моего приложения WCF.

Мне просто нужно сохранить некоторые значения в начале вызова, и мне нужен доступ к этим значениям, пока я использую различные методы моей службы.

Для этого идеально подойдет сеанс Asp.NET, поэтому мне нужно выяснить, что доступно в приложении WCF для хранения таких значений.

Примечание: это всего лишь сеанс вызова, мне не нужно сохранять этот сеанс между различными вызовами от клиента к сервису и т. Д.

Ответы [ 2 ]

4 голосов
/ 15 марта 2010

То, что вы описываете (пользовательский контекст, который сохраняется в течение жизни одного запроса), больше похоже на HttpContext.Items, чем на сеанс ASP.NET.

В WCF есть класс с именем OperationContextэто похоже на HttpContext.У него нет свойства Items для пользовательского контекста, но в этом посте описывается метод, который вы можете использовать для достижения желаемого.

2 голосов
/ 15 марта 2010

Вы должны сделать пару вещей.

Установить aspNetCompatibilityEnabled = true на вашем хосте (внутри system.ServiceModel | serviceHostingEnvironment)

Услуга ( не договор ) - следует отнести к:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Наконец, у вас есть необходимость установить allowCookies для вашей привязки в true.

<basicHttpBinding>
 <binding name="SessionBinding" allowCookies="true">
</basicHttpBinding>

Просто любопытно, вы уверены, что нужен сеанс?

...