M
mnowosad
We have an ASP.NET 2.0 web site, running on IIS version 6.0, Windows 2003
server. On the Application_Start event of the Global.asax.cs, we load
configuration values to the HttpApplicationState dictionary, to be used
throughout by all web site pages, on a read-only fashion.
The problem we are experiencing is that, after running for some hours, the
values of the HttpApplicationState are lost. Our code never assumes there is
a possibility that the golbal data is not there, so it crashes with a
NullReferenceException exception.
So for instance, we have this line of code in the Global.asax.cs:
protected void Application_Start(Object sender, EventArgs e)
{
Application["SiteName"] = " Our web site";
}
And we have this kind of code in our ASP.NET pages.
string siteName = Application["SiteName"];
I know that if you are using the ASP.NET Cache object, you are supposed to
check if the data is still there, since it could have already been scavenged.
But I expected the HttpApplicationState not to have this issue, so our code
would never need to check if data was still there.
I thought the only time HttpApplicationState data would be reset would be
when the web site Application Domain was shut down (either due to ASP.NET
worker process reset or IIS reset).
But in this case, I was expecting the Application_Start event to be
triggered again upon the first request after the Application Domain shut
down, so the data would be loaded again to the HttpApplicationState
dictionary.
Is there any circumstance where HttpApplicationState dictionary entry may be
reset or scavenged during the lifetime of ASP.NET Application Domain, like it
happens with the Cache entries?
server. On the Application_Start event of the Global.asax.cs, we load
configuration values to the HttpApplicationState dictionary, to be used
throughout by all web site pages, on a read-only fashion.
The problem we are experiencing is that, after running for some hours, the
values of the HttpApplicationState are lost. Our code never assumes there is
a possibility that the golbal data is not there, so it crashes with a
NullReferenceException exception.
So for instance, we have this line of code in the Global.asax.cs:
protected void Application_Start(Object sender, EventArgs e)
{
Application["SiteName"] = " Our web site";
}
And we have this kind of code in our ASP.NET pages.
string siteName = Application["SiteName"];
I know that if you are using the ASP.NET Cache object, you are supposed to
check if the data is still there, since it could have already been scavenged.
But I expected the HttpApplicationState not to have this issue, so our code
would never need to check if data was still there.
I thought the only time HttpApplicationState data would be reset would be
when the web site Application Domain was shut down (either due to ASP.NET
worker process reset or IIS reset).
But in this case, I was expecting the Application_Start event to be
triggered again upon the first request after the Application Domain shut
down, so the data would be loaded again to the HttpApplicationState
dictionary.
Is there any circumstance where HttpApplicationState dictionary entry may be
reset or scavenged during the lifetime of ASP.NET Application Domain, like it
happens with the Cache entries?