You'll probably need to change
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
to
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
indicating that the service must run in an application domain with ASP.NET compatibility mode set to true since you are trying to access functionality from ASP.Net.
As Abhinav S points out: you also need to keep the session alive. You can do thei by issuing a call to it every few, like 10, minutes ... otherwise the stuff you stored in the session variables will just go away.
Update:
change
public object GetSessionVariable(string key)
to
public string GetSessionVariable(string key)
giving serializer some knowledge about what it supposed to serialize. SilverLight doesn't support the [Serializable] attribute, and while there are ways around this, it's best not to get into that topic at this stage.
Now build your esrvice and update the service reference in your SilverLight project.
Before you can bind to data from this service, you need to connect to the service from your SilverLight application, and retrieve the required value(s)
Regards
Espen Harlinn