if (ex != null)
{
//Die 'true' geeft aan dat je info over het bestand nodig hebt.
var trace = new System.Diagnostics.StackTrace(ex, true);
ViewData["Description"] = ex.Message;
//Al die andere die je al had
//Hieronder hetgeen je nog nodig had
ViewData["File"] = trace.GetFrame(0).GetFileName()
ViewData["Methode"] = trace.GetFrame(0).GetMethod().Name;
ViewData["Lijnnummer"] = trace.GetFrame(0).GetFileLineNumber();
}
else
{
ViewData["Description"] = "Er is een onbekende error opgetreden.";
}
if(ex !=null)
{
//Die 'true' geeft aan dat je info over het bestand nodig hebt.
var trace =newSystem.Diagnostics.StackTrace(ex, true);
Ik heb dit staan in de webconfig:
<customErrors mode="On" defaultRedirect="/Error/HttpError/">
</customErrors>
Hij moet dus naar de controller Error gaan en dan de method 'HttpError' uitvoeren. Vrijdag werkte dat, maar nu (zonder iets zinnigs gewijzigd te hebben) krijg ik gewoon zo'n 'Serverfout in toepassing /.' (wit/gele error pagina) te zien. Weet iemand hoe ik dat goed kan aanpassen, want volgens mij zou hij naar Error/HttpError moeten gaan toch?
Beschrijving: Er is een toepassingsfout opgetreden op de server. Door de huidige aangepaste foutinstellingen voor deze toepassing kunnen de details van de toepassingsfout niet worden weergegeven.
Details: Als u de details van dit specifieke foutbericht zichtbaar wilt maken op de lokale server, maakt u een label <customErrors> in een configuratiebestand web.config dat zich in de hoofdmap van de huidige webtoepassing bevindt. Het attribuut mode van dit label <customErrors> moet vervolgens worden ingesteld op RemoteOnly. Als de details moeten kunnen worden weergegeven op externe systemen, stelt u mode in op Off.
[edit]
De error is op de pagina die ik ook een foutmelding moet geven (daarvoor heb ik hem gemaakt), dus ik wil dat ik daar dus niet zo'n rare error krijg, maar gewoon een error 'in de pagina'.
Dit is even voor degene die niet snappen wat ik wil bereiken.
[edit2]
Ik heb al een deel van het probleem opgelost. Ik had zelf iets fout gedaan in de .aspx file.
Maar nu probeer ik Titjes z'n script uit, alleen daar komt die niet. Toen heb ik gekeken en heb ik gezien dat die ex niet gevuld wordt. Hoe is dat mogelijk?
Het volgende werkt dan opeens niet.
try
{
ex = (Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
} catch {
}
Exception ex = null;
try {
ex = (Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
throw ex;
} catch {
}
if (ex != null) {
var trace = new System.Diagnostics.StackTrace(ex, true);
ViewData["FileName"] = trace.GetFrame(0).GetFileName();
ViewData["Methode"] = trace.GetFrame(0).GetMethod().Name;
ViewData["Linenumber"] = trace.GetFrame(0).GetFileLineNumber();
ViewData["Description"] = "Er is een onbekende error opgetreden. Neem contact op met de webapplicatie-beheerder.";
} else {
ViewData["Description"] = "Test: Er is een onbekende error opgetreden. Neem contact op met de webapplicatie-beheerder.";
}
ViewData["Main_Title"] = "Foutmelding";
return View("Error");
Exception ex = null;
try{
ex =(Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
throw ex;
}catch{
}
if(ex !=null){
var trace =newSystem.Diagnostics.StackTrace(ex, true);
En als je debugged/quickwatched wordt de ViewData correct ingevuld?
Het toeval wil dat ik nu ook bezig ben met ASP.NET MVC 2, het kan er dus volledig naast zijn, maar misschien zit het stuk over excepties wel goed maar gaat het ergens bij het bezorgen van die data naar de view mis? (vandaar de vraag over de invulling van ViewData, excuses als het oeverloos gezwam is).
Die "throw ex" heeft natuurlijk geen zin. Ik had niet gezien dat het if-else buiten de catch stond. Inderdaad zoals Maarten zegt eens werken met breakpoints/watch en kijken wat er in de ViewData komt te zitten.