Using a Session in WCF through AspNetCompatibility
Firstly let us all thank Steve Main . The session/state model is the same that is leveraged by the asp.net framework and hence all the feature of state management comes bundled with it.
On a moral note its the responsibility of using this is upto the designers. But there might be applications and scenarios that may exist or require this to be supported.
The basic steps are quite simple for this.
1. Enable asp.net compatibilty on the serivce hosting environment.
<
system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">....
2. The service type should next specify the asp.net compatibility requirements. Please keep in mind that this is specified on the ServiceType and not on the Contract as it is the service type that handles the implementation.
[
AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class service1 : IService1{....}
3. The final piece in this is that the client should enable this stateful communicaiton with the service. This is done by specifying the allowCookies to true in the binding. If you do not enable this then you wont find the session behaving as you want it. You will find that the session for each request is different even if the call is against the same proxy. Another important point to note here is that the session is tied to the instance of the proxy. So with each instance you need to remember thats it comes with a new session. This is the configuration that you have to tie with the endpoint consuming the service.
<
basicHttpBinding>
<binding name="BasicHttpBinding_IService1" allowCookies="true" />
</basicHttpBinding>
Comments
Anonymous
August 06, 2006
We already have quite a large number of ASMX services and clients. One major point to be kept in mind...Anonymous
January 23, 2007
Hi Sajay: I have created a sample following your step. I found that the session in WCF Client and Service is not same. How to let the client and service use the same session? Thanks, ZhihaoAnonymous
January 23, 2007
If you are seeing a missmatch in the session data post this in the forums so that we can track the issue. http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=118&SiteID=1Anonymous
January 28, 2007
Hi Sajay: I have post my question in http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1162188&SiteID=1&mode=1Anonymous
August 07, 2010
Awesome!!! Thanks Steve, it worked like a charm. Thanks, Cole