Jag har ett ngt knepigt fel som uppstår i min felhantering. Jag har en felhanteringsklass med metoden HandleException. Den kollar vad det är för typ av fel, jag har ett antal egen definierade fel som ärver från System.Exception. Efter mycket grävande löste jag detta själv. Jag har en metod Authenticate_Request i Global.asax, det är den första metod som försöker komma åt databasen. När detta inte går kastas ett fel uppåt. Problemet är att i detta läge är inte konstanterna i min struct "laddade", dvs de returnerar bara null.Konstanter som tappar värde
Beroende på vad det är för typ av fel och vilken del av applikationen jag är i skickas sedan användaren vidare till en av flera felsidor. I metoden HandleException lagras felet i sessionen för att jag sedan skall kunna plocka fram det i respektive felsida.
För att göra det lätt att ändra och underhålla har jag ett antal konstanter som sätter namnet på det objekt jag lagrar i sessionen, konstanten ligger i en struct i en egen .cs-fil och ser ut så här:
<CODE>
public struct WDPMIDConstant
{
public const string SESSION_KEY_HANDLED_EXCEPTION = "HandledException";
...Massa andra konstanter följer här...
}
</CODE>
I min HandleException-metod anropar jag sedan metoden SessionAddException där jag bl a skickar med konstanten genom att skriva:
<CODE>
SessionAddException(context, WDPMIDConstant.SESSION_KEY_HANDLED_EXCEPTION, message, ex);
</CODE>
Nu till problemet, WDPMIDConstant.SESSION_KEY_HANDLED_EXCEPTION är null när jag skall använda den i metoden SessionAddException och jag begriper inte varför.
Ngn som kan se ngt fel?
/MagnusSv: Konstanter som tappar värde
Varför det är så vet jag inte och jag tycker att det är lite märkligt. Gick dock att lösa genom att flytta konstanterna till min felhanterings-klass.
Ett följdproblem blev att när man kör Authenticate_Request första gången finns ännu ingen session, därför går det inte att lagra felet i sessionen för att sedan plocka upp det i felsidan. Istället fick jag stopp in det i en Application-parameter ocg plocka det därifrån till felsidan.