467,905 Members | 1,839 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,905 developers. It's quick & easy.

Cache items missing

Hi,

I am persisting the viewstate for each page into the Cache object, below is
shown my methods for saving and loading:

I am able to save the viewstate to the cache and most times I can load it
ok, however it seems that every now and again it fails to Deserialize the
viewstate.

My Application pool is set to shutdown after 180mins of idle.

IIS6.0 W2K3 SVR
TIA

MattC

private string ViewStateCacheKey
{
get{ return "VIEWSTATE_" + Request.UserHostAddress; }
}

protected override void SavePageStateToPersistenceMedium(object viewState)
{
LosFormatter oLosFormatter = new LosFormatter();
StringWriter oStringWriter = new StringWriter();
oLosFormatter.Serialize(oStringWriter, viewState);
string str = this.ViewStateCacheKey + "_" + Guid.NewGuid().ToString();

try
{
Cache.Insert(str, //key
oStringWriter.ToString(), //value
null, //dependency
Cache.NoAbsoluteExpiration, //no absolute expiration
new TimeSpan(0,0,Session.Timeout + 10,0,0), //sliding expiration
Seesion timeout
CacheItemPriority.High,
onRemove); //call back on removal
}
catch(Exception e)
{
throw new Exception("Failed to store viewstate in Cache", e);
}

}

RegisterHiddenField("__VIEWSTATE_KEY", str);
RegisterHiddenField("__VIEWSTATE", String.Empty);

}

protected override object LoadPageStateFromPersistenceMedium()
{

object viewstate = null;//return viewstate
LosFormatter oLosFormatter = new LosFormatter();
string str = Request.Form["__VIEWSTATE_KEY"];

try
{
viewstate = oLosFormatter.Deserialize(Cache[str].ToString());//cache
}
catch(Exception e)
{
Events.WriteToLog("Failed to deserialize ViewState '" + str +"'
from cache: " + e.Message);//system event log
}

return viewstate;

}
Nov 19 '05 #1
  • viewed: 1733
Share:
3 Replies
At the 180 minute mark, the pool is recycled and the app domain is unloaded.
Variables and objects belonging to that application domain are lost. Your
viewstate may still be there, but the cache values are gone.

--
Regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
The Microsoft Office Web Components Black Book with .NET
Now Available @ http://www.lulu.com/owc
----------------------------------------------------------
"MattC" <m@m.com> wrote in message
news:%2****************@TK2MSFTNGP14.phx.gbl...
Hi,

I am persisting the viewstate for each page into the Cache object, below
is shown my methods for saving and loading:

I am able to save the viewstate to the cache and most times I can load it
ok, however it seems that every now and again it fails to Deserialize the
viewstate.

My Application pool is set to shutdown after 180mins of idle.

IIS6.0 W2K3 SVR
TIA

MattC

private string ViewStateCacheKey
{
get{ return "VIEWSTATE_" + Request.UserHostAddress; }
}

protected override void SavePageStateToPersistenceMedium(object viewState)
{
LosFormatter oLosFormatter = new LosFormatter();
StringWriter oStringWriter = new StringWriter();
oLosFormatter.Serialize(oStringWriter, viewState);
string str = this.ViewStateCacheKey + "_" + Guid.NewGuid().ToString();

try
{
Cache.Insert(str, //key
oStringWriter.ToString(), //value
null, //dependency
Cache.NoAbsoluteExpiration, //no absolute expiration
new TimeSpan(0,0,Session.Timeout + 10,0,0), //sliding expiration
Seesion timeout
CacheItemPriority.High,
onRemove); //call back on removal
}
catch(Exception e)
{
throw new Exception("Failed to store viewstate in Cache", e);
}

}

RegisterHiddenField("__VIEWSTATE_KEY", str);
RegisterHiddenField("__VIEWSTATE", String.Empty);

}

protected override object LoadPageStateFromPersistenceMedium()
{

object viewstate = null;//return viewstate
LosFormatter oLosFormatter = new LosFormatter();
string str = Request.Form["__VIEWSTATE_KEY"];

try
{
viewstate = oLosFormatter.Deserialize(Cache[str].ToString());//cache
}
catch(Exception e)
{
Events.WriteToLog("Failed to deserialize ViewState '" + str +"'
from cache: " + e.Message);//system event log
}

return viewstate;

}

Nov 19 '05 #2
Also, UserHostAddress isn't guaranteed to be unique per visitor...namely
those who sit behind a proxy (increasingly popular). I would expect strange
behaviour if two users from behind the same proxy visit your application.
This is likely why sessions are prefered for server-side viewstate than
cache.

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/
"Alvin Bruney [MVP]" <vapor at steaming post office> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
At the 180 minute mark, the pool is recycled and the app domain is unloaded. Variables and objects belonging to that application domain are lost. Your
viewstate may still be there, but the cache values are gone.

--
Regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
The Microsoft Office Web Components Black Book with .NET
Now Available @ http://www.lulu.com/owc
----------------------------------------------------------
"MattC" <m@m.com> wrote in message
news:%2****************@TK2MSFTNGP14.phx.gbl...
Hi,

I am persisting the viewstate for each page into the Cache object, below
is shown my methods for saving and loading:

I am able to save the viewstate to the cache and most times I can load it ok, however it seems that every now and again it fails to Deserialize the viewstate.

My Application pool is set to shutdown after 180mins of idle.

IIS6.0 W2K3 SVR
TIA

MattC

private string ViewStateCacheKey
{
get{ return "VIEWSTATE_" + Request.UserHostAddress; }
}

protected override void SavePageStateToPersistenceMedium(object viewState) {
LosFormatter oLosFormatter = new LosFormatter();
StringWriter oStringWriter = new StringWriter();
oLosFormatter.Serialize(oStringWriter, viewState);
string str = this.ViewStateCacheKey + "_" + Guid.NewGuid().ToString();

try
{
Cache.Insert(str, //key
oStringWriter.ToString(), //value
null, //dependency
Cache.NoAbsoluteExpiration, //no absolute expiration
new TimeSpan(0,0,Session.Timeout + 10,0,0), //sliding expiration
Seesion timeout
CacheItemPriority.High,
onRemove); //call back on removal
}
catch(Exception e)
{
throw new Exception("Failed to store viewstate in Cache", e);
}

}

RegisterHiddenField("__VIEWSTATE_KEY", str);
RegisterHiddenField("__VIEWSTATE", String.Empty);

}

protected override object LoadPageStateFromPersistenceMedium()
{

object viewstate = null;//return viewstate
LosFormatter oLosFormatter = new LosFormatter();
string str = Request.Form["__VIEWSTATE_KEY"];

try
{
viewstate = oLosFormatter.Deserialize(Cache[str].ToString());//cache }
catch(Exception e)
{
Events.WriteToLog("Failed to deserialize ViewState '" + str +"' from cache: " + e.Message);//system event log
}

return viewstate;

}


Nov 19 '05 #3
Guys,

The viewstate not being found is happening at times well within the 180min
mark. The proxy point is well taken and may be something to consider,
however, this is an Intranet app and so does not suffer with this.

I think I have found my answer. It lies in the priority I gave the cache
items.
CacheItemPriority.High

I think as the worker process grew with all the postbacks storing new
viewstate ASP.NET removed some entries to free resources.

As a test I have set this to NotRemovable and am relying on the expiration
to remove it.

MattC
"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:ui*************@TK2MSFTNGP15.phx.gbl...
Also, UserHostAddress isn't guaranteed to be unique per visitor...namely
those who sit behind a proxy (increasingly popular). I would expect
strange
behaviour if two users from behind the same proxy visit your application.
This is likely why sessions are prefered for server-side viewstate than
cache.

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/
"Alvin Bruney [MVP]" <vapor at steaming post office> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
At the 180 minute mark, the pool is recycled and the app domain is

unloaded.
Variables and objects belonging to that application domain are lost. Your
viewstate may still be there, but the cache values are gone.

--
Regards,
Alvin Bruney [MVP ASP.NET]

[Shameless Author plug]
The Microsoft Office Web Components Black Book with .NET
Now Available @ http://www.lulu.com/owc
----------------------------------------------------------
"MattC" <m@m.com> wrote in message
news:%2****************@TK2MSFTNGP14.phx.gbl...
> Hi,
>
> I am persisting the viewstate for each page into the Cache object,
> below
> is shown my methods for saving and loading:
>
> I am able to save the viewstate to the cache and most times I can load it > ok, however it seems that every now and again it fails to Deserialize the > viewstate.
>
> My Application pool is set to shutdown after 180mins of idle.
>
> IIS6.0 W2K3 SVR
>
>
> TIA
>
> MattC
>
> private string ViewStateCacheKey
> {
> get{ return "VIEWSTATE_" + Request.UserHostAddress; }
> }
>
> protected override void SavePageStateToPersistenceMedium(object viewState) > {
> LosFormatter oLosFormatter = new LosFormatter();
> StringWriter oStringWriter = new StringWriter();
> oLosFormatter.Serialize(oStringWriter, viewState);
> string str = this.ViewStateCacheKey + "_" + Guid.NewGuid().ToString();
>
> try
> {
> Cache.Insert(str, //key
> oStringWriter.ToString(), //value
> null, //dependency
> Cache.NoAbsoluteExpiration, //no absolute expiration
> new TimeSpan(0,0,Session.Timeout + 10,0,0), //sliding expiration
> Seesion timeout
> CacheItemPriority.High,
> onRemove); //call back on removal
> }
> catch(Exception e)
> {
> throw new Exception("Failed to store viewstate in Cache", e);
> }
>
> }
>
> RegisterHiddenField("__VIEWSTATE_KEY", str);
> RegisterHiddenField("__VIEWSTATE", String.Empty);
>
> }
>
> protected override object LoadPageStateFromPersistenceMedium()
> {
>
> object viewstate = null;//return viewstate
> LosFormatter oLosFormatter = new LosFormatter();
> string str = Request.Form["__VIEWSTATE_KEY"];
>
> try
> {
> viewstate = oLosFormatter.Deserialize(Cache[str].ToString());//cache > }
> catch(Exception e)
> {
> Events.WriteToLog("Failed to deserialize ViewState '" + str +"' > from cache: " + e.Message);//system event log
> }
>
> return viewstate;
>
> }
>



Nov 19 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

21 posts views Thread by Bill H | last post: by
4 posts views Thread by Angel | last post: by
4 posts views Thread by Guadala Harry | last post: by
1 post views Thread by Christopher | last post: by
1 post views Thread by W. Jordan | last post: by
5 posts views Thread by Stan SR | last post: by
3 posts views Thread by poolieweb | last post: by
1 post views Thread by BizWorld | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.