2010-03-15 9 views
5

Necesito usar o estimular un objeto de sesión muy simple dentro de mi aplicación WCF.Variable de sesión en la aplicación WCF

Simplemente necesito almacenar algunos valores al comienzo de una llamada y necesito acceder a estos valores mientras realizo algunos métodos diferentes de mi servicio.

La sesión de Asp.NET sería muy útil para esto, así que tengo que averiguar qué hay disponible en una aplicación WCF para almacenar dichos valores.

Nota: esto es sólo una llamada por sesión, no necesito mantener esta sesión entre diferentes llamadas desde el cliente al servicio y tal ..

Respuesta

4

Lo que está describiendo (el contexto personalizado que se conserva durante la vigencia de una sola solicitud) es más parecido al HttpContext.Items que a una sesión de ASP.NET.

WCF tiene una clase llamada OperationContext que es similar a HttpContext. No tiene una propiedad Items para un contexto personalizado, pero this blog post describe una técnica que puede usar para lograr lo que desea.

+2

@Joe El enlace está roto. ¿Puedes proporcionar más información? ¡Gracias! –

2

Tienes que hacer un par de cosas.

Conjunto aspNetCompatibilityEnabled = true en su host (dentro system.serviceModel | serviceHostingEnvironment)

El servicio (no el contrato) - se debe atribuir a:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 

Finalmente usted tiene tienes que establecer allowCookies en tu enlace a verdadero.

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

Sólo por curiosidad, ¿está seguro de que necesidad sesión?

+0

El se debe establecer en el servicio que supongo? – Enzero

+1

se debe establecer en el cliente – Arvind

Cuestiones relacionadas