by APIJunkie
11. January 2008 11:18
If you are trying to access an ASP.NET Session object from inside a static function you will encounter error CS0120:
"An object reference is required for non static field, method, or property... "
The problem is that the Session object is a non static member of the Page/Control class you are using.
When you are inside a static function you do not have access to non static members of your class.
Example:
// this function is ok inside a page or control
void testFunc()
{
Session["test"] = "testString";
}
// this function will produce an error inside a page or control
static void testStaticFunc()
{
Session["test"] = "testString";
}
The solution to the problem is to access the Session object from another static object/function that has access to the current Session object.
Enter HttpContext.Current.Session -> http://msdn2.microsoft.com/en-us/library/system.web.httpcontext_members.aspx
The Session object obtained from HttpContext can be used from inside a static function since HttpContext.Current is a static property.
Here is an example of how to use it:
// this function is ok inside a page or control
static void testStaticFunc()
{
HttpContext.Current.Session["test"] = "testString";
}