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;
} 3 1851
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;
}
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;
}
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; > > } >
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Bill H |
last post by:
I have a routine that displays 60 items (with thumbnails) per page.
You can click any item and displays a new page with item details. When
the user...
|
by: Angel |
last post by:
I am saving items in the cache in my code behind. By setting these items with
an expiration are these items only available for the page its being...
|
by: Guadala Harry |
last post by:
I want to create a STATIC method that removes all items from the Cache.
Questions:
1. Is a safe thing to do (any threading issues?)
2. Is the...
|
by: Christopher |
last post by:
In one of our ASP.NET Pages, we are starting a new background thread that we
do not need to go and get any status on or use after the page finishes....
|
by: W. Jordan |
last post by:
Hello,
I would like to instantiate multiple Cache instances within my
web application, for instance, one for database related items,
one for...
|
by: Adam |
last post by:
On an xp machine, the caching works as expected. I have deployed to a win2k
server, and an item I add to the cache expires almost immediately some...
|
by: Stan SR |
last post by:
Hi,
Some newbie questions.. :-)
First, what is the namespace to use for the Cache class ?
When I use this bit of code I get an error
if...
|
by: poolieweb |
last post by:
I have created a custom user control which creates a ASPxMenu ( Same
fucntion as standard menu control) from data retreved from a webservice...
|
by: BizWorld |
last post by:
I am trying to cache a full DROP Down that can have lot of values. so
i have 500 site users hitting a page in a second. i need to cache some...
|
by: teenabhardwaj |
last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
|
by: Naresh1 |
last post by:
What is WebLogic Admin Training?
WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
|
by: jalbright99669 |
last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
|
by: antdb |
last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine
In the overall architecture, a new "hyper-convergence" concept was...
|
by: Matthew3360 |
last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function.
Here is my code.
...
|
by: Matthew3360 |
last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it...
|
by: AndyPSV |
last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable...
|
by: WisdomUfot |
last post by:
It's an interesting question you've got about how Gmail hides the HTTP referrer when a link in an email is clicked. While I don't have the specific...
|
by: Matthew3360 |
last post by:
Hi,
I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web...
| |