Click here to Skip to main content
15,880,543 members
Articles / Web Development / ASP.NET

Access Sessions from Silverlight and ASP.NET

Rate me:
Please Sign up or sign in to vote.
4.71/5 (24 votes)
20 Jan 2009CPOL3 min read 146.8K   3.8K   43   52
Add or Retrieve Session Object from Silverlight and ASP.NET

Introduction

Another popular product from Microsoft is “Silverlight” for Rich Internet Applications (RIA). Its main intention is to provide more user interactive features with very good look & feel.

As Silverlight is targeting cross browser, cross platform applications, developers coming with Web Application experience compare different features that other web applications provide.

Most of the web applications require maintaining session state with the help of various mechanisms. While working with Silverlight, we may need Add or Get data from ASP.NET session.
As Silverlight works in client’s environment, it does not have direct access to ASP.NET session object. The only way we can retrieve the information from Session is through Web Service.

This article just explains how to work with this scenario with a practical working solution.

Assumptions

I assume that the developer who is ready to work with this example has little or more experience in working in ASP.NET, C#, WCF and Silverlight.

Development Tools

  • Visual Studio 2008
  • Silverlight SDK RTM 2.0

Let’s Start

Follow the steps given below to create the solution:

  1. Create a new Silverlight Web site from Visual Studio.
  2. Add a WCF Service to the Web application. We need it for Silverlight to Add or Get values from Session. By default, wsHTTP protocol is added to the configuration.
  3. Make sure that WCF is configured to “basicHTTP” protocol by changing the settings in web application’s “Web.config” file.
  4. If the WCF service comes with the Interface, do not hesitate to remove from the project as we are hosting it with the web application itself.
  5. Add the web service reference to the Silverlight application.
  6. Add 2 new web pages to the web application to work with Silverlight and web application Session state at the same time for our testing purposes.

Once you perform the above steps, your Visual Studio may look like this:

coolsource1.JPG

Each web page (ASP.NET page and Silverlight page) allows us to add and/or information from Session. The UI may look like this: 

coolsource2.JPG

coolsource2.JPG

In this example, we perform 4 different actions as given below:

  1. Add information to Session from ASP.NET page (ASPNetPage.aspx)
  2. Retrieve information from Session from ASP.NET page (ASPNetPage.aspx)
  3. Add information to Session from Silverlight page through WCF service(SilverlightPage.aspx)
  4. Retrieve information from Session from Silverlight page through WCF service(SilverlightPage.aspx)

In ASP.NET, we use the below code to store or retrieve the information in Session:

C#
Session[variableName] = someValue; // Add or update information in Session
Object sessionVar = Session[variableName]; // Retrieve information in Session

The below code lets you add the information to Session from Silverlight:

C#
public void btnAddToSession_Click(object sender, RoutedEventArgs e)
{
     lblAddToSessionStatus.Text = "Adding value to Session...";
     client.SetSessionValueForKeyAsync(txtAddSessionKey.Text, txtAddSessionValue.Text);
}
C#
void client_SetSessionValueForKeyCompleted
	(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
      if ((null != e.Error) && (!String.IsNullOrEmpty(e.Error.Message)))
      {
          lblAddToSessionStatus.Text = "Error: " + e.Error.Message;
      }
      else
      {
          lblAddToSessionStatus.Text = "Successfully added.";
      }
}

The below code lets you retrieve the information in Session from ASP.NET page:

C#
protected void btnGetFromSession_Click(object sender, EventArgs e)
{
     if (null != Session[txtGetFromSessionKey.Text])
     {
         txtGetFromSessionValue.Text = Session[txtGetFromSessionKey.Text] as string;
         lblGetFromSessionStatus.Text = "Done.";
     }
     else
     {
         lblGetFromSessionStatus.Text = "Session Key does not exist.";
     }
}

When you run the attached application, the UIs look like this:

coolsource4.JPG

coolsource4.JPG

Conclusion 

That's all for this part of Beginning Silverlight & ASP.NET sessions. I explained how Session values can be added/retrieved to Session Objects from Silverlight and ASP.NET. Though there may be many other ways to do the same job, I tried to give the basic implementation. Please feel free to give feedback.

I hope this article was helpful for you. :)

History

  • 20th January, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
India India
I am currently working as a Software Development Advisor. Practicing Object Oriented Design Patterns and flexible to learn new technologies.

Comments and Discussions

 
GeneralMy vote of 1 Pin
david.james.se28-Dec-12 21:28
david.james.se28-Dec-12 21:28 
GeneralMy vote of 4 Pin
S@53K^S20-Dec-12 7:50
S@53K^S20-Dec-12 7:50 
QuestionGetting Error passing large Data to wcf Pin
udhdav22-Nov-12 1:54
udhdav22-Nov-12 1:54 
AnswerRe: Getting Error passing large Data to wcf Pin
A. Rajesh Kumar22-Nov-12 2:00
A. Rajesh Kumar22-Nov-12 2:00 
QuestionNeed a little more Pin
dwf200829-Feb-12 6:04
dwf200829-Feb-12 6:04 
AnswerRe: Need a little more Pin
A. Rajesh Kumar29-Feb-12 17:53
A. Rajesh Kumar29-Feb-12 17:53 
GeneralRe: Need a little more Pin
dwf20085-Mar-12 5:27
dwf20085-Mar-12 5:27 
GeneralRe: Need a little more Pin
A. Rajesh Kumar5-Mar-12 19:01
A. Rajesh Kumar5-Mar-12 19:01 
GeneralMy vote of 5 Pin
Chris Schnick11-Jan-12 18:39
Chris Schnick11-Jan-12 18:39 
QuestionMultiple Values and Complex Objects - Issues Pin
Chris Schnick11-Jan-12 9:15
Chris Schnick11-Jan-12 9:15 
AnswerRe: Multiple Values and Complex Objects - Issues Pin
A. Rajesh Kumar11-Jan-12 18:14
A. Rajesh Kumar11-Jan-12 18:14 
GeneralRe: Multiple Values and Complex Objects - Issues Pin
Chris Schnick11-Jan-12 18:30
Chris Schnick11-Jan-12 18:30 
GeneralRe: Multiple Values and Complex Objects - Issues Pin
A. Rajesh Kumar11-Jan-12 18:32
A. Rajesh Kumar11-Jan-12 18:32 
QuestionNeed your help Mr. A. Rajesh Kumar Pin
nbeiruty21-Dec-11 2:44
nbeiruty21-Dec-11 2:44 
AnswerRe: Need your help Mr. A. Rajesh Kumar Pin
A. Rajesh Kumar21-Dec-11 3:20
A. Rajesh Kumar21-Dec-11 3:20 
QuestionSilverlight Security Error when trying to access a WCF service Pin
Dennis Geasan27-Oct-11 16:36
Dennis Geasan27-Oct-11 16:36 
AnswerRe: Silverlight Security Error when trying to access a WCF service Pin
Dennis Geasan27-Oct-11 16:44
Dennis Geasan27-Oct-11 16:44 
GeneralRe: Silverlight Security Error when trying to access a WCF service Pin
A. Rajesh Kumar27-Oct-11 19:20
A. Rajesh Kumar27-Oct-11 19:20 
Generalnice example..! Pin
David Castro13-Jun-11 7:31
David Castro13-Jun-11 7:31 
GeneralQuestion Pin
Vimalsoft(Pty) Ltd9-Jun-11 19:25
professionalVimalsoft(Pty) Ltd9-Jun-11 19:25 
GeneralI'm keep getting this : "Object reference not set to an instance of an object." [modified] Pin
idanb5-Jun-11 5:54
idanb5-Jun-11 5:54 
GeneralRe: I'm keep getting this : "Object reference not set to an instance of an object." Pin
A. Rajesh Kumar6-Jun-11 23:20
A. Rajesh Kumar6-Jun-11 23:20 
GeneralRe: I'm keep getting this : "Object reference not set to an instance of an object." Pin
David Castro13-Jun-11 7:30
David Castro13-Jun-11 7:30 
GeneralMy vote of 4 Pin
babsie4u19-Dec-10 18:22
babsie4u19-Dec-10 18:22 
GeneralThanks! Pin
johnzered12-Nov-10 0:42
johnzered12-Nov-10 0:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.