That will get me the last error, but I am trying to get all the errors and
am looping through the innerException object. The GetBaseExceptio n also
gets me the last one, which would be fine. But I found that the error
response I get back is unreadable.
If I don't do the Application_Err or, I get this error:
*************** *************** *************** *************** *******
Compilation Error
Description: An error occurred during the compilation of a resource required
to service this request. Please review the following specific error details
and modify your source code appropriately.
Compiler Error Message: BC30451: Name 'SearchType' is not declared.
Source Error:
Line 89: Else
Line 90: 'We aren't dealing with an array, so just display the
variable
Line 91: if
SearchType.Inde xOf(Session.Con tents(strName). GetType.ToStrin g()) >= 0 then
Line 92: trace.warn(strN ame & " - " & Session.Content s(strName) & "
" & Session.Content s(strName).GetT ype.ToString)
Line 93: else
Source File:
C:\Inetpub\wwwr oot\staffingwor kshop\ADMINISTR ATION\showExcep tions.aspx
Line: 91
*************** *************** *************** *************** *******
If I do the following:
*************** *************** *************** *************** *******
Sub Application_Err or(Sender As Object, E as EventArgs)
Dim exception As Exception = Server.GetLastE rror().GetBaseE xception()
Dim ErrorString as String
While Not exception Is Nothing
ErrorString &= "Source: " & exception.Sourc e & vbCrLf & _
"Message: " & exception.Messa ge & vbCrLf & _
"Stack Trace: " & vbCrLf & exception.Stack Trace & vbCrLf &
vbCrLf
exception = exception.Inner Exception
End While
Dim MyMessage as New MailMessage
MyMessage.To =
tf*@ftsos.com
MyMessage.From = "tf*@ftsos. com"
MyMessage.Subje ct = "Unhandled ASP.Net Error"
MyMessage.Body = vbCrLf & vbCrLf & "An Error was Generated on " & now &
vbCrLf & vbCrLf & _
"To see a list of Errors:
HTTP:\\www.staf fingworkshop.co m\administratio n\showException s.aspx" & vbCrLf
& vbCrLf & _
"Page: " & HTTPContext.Cur rent.Request.Ur l.ToString() & vbCrLf &
vbCrLf & ErrorString
SmtpMail.SmtpSe rver = Application("Ma ilServer")
SmtpMail.Send(M yMessage)
Context.ClearEr ror()
response.Redire ct("/PageError.aspx" )
End Sub
*************** *************** *************** *************** *******
I get the following results:
*************** *************** *************** *************** ********
An Error was Generated on 2/21/2006 5:39:25 PM
To see a list of Errors:
HTTP:\\
http://www.staffingworkshop.com\admi...xceptions.aspx
Page:
http://www.staffingworkshop.com/ADMI...xceptions.aspx
Source: System.Web
Message: External component has thrown an exception.
Stack Trace:
at
System.Web.Comp ilation.BaseCom piler.ThrowIfCo mpilerErrors(Co mpilerResults
results, CodeDomProvider codeProvider, CodeCompileUnit sourceData, String
sourceFile, String sourceString)
at System.Web.Comp ilation.BaseCom piler.GetCompil edType()
at System.Web.UI.P ageParser.Compi leIntoType()
at System.Web.UI.T emplateParser.G etParserCacheIt emThroughCompil ation()
*************** *************** *************** *************** ********
If I take out the GetBaseExceptio n():
Dim exception As Exception = Server.GetLastE rror().GetBaseE xception()
I get
*************** *************** *************** *************** ***********
An Error was Generated on 2/21/2006 5:41:49 PM
To see a list of Errors:
HTTP:\\
http://www.staffingworkshop.com\admi...xceptions.aspx
Page:
http://www.staffingworkshop.com/ADMI...xceptions.aspx
Source: System.Web
Message: External component has thrown an exception.
Stack Trace:
at System.Web.UI.T emplateParser.G etParserCacheIt emInternal(Bool ean
fCreateIfNotFou nd)
at System.Web.UI.T emplateParser.G etParserCacheIt emWithNewConfig Path()
at System.Web.UI.T emplateParser.G etParserCacheIt em()
at
System.Web.UI.T emplateControlP arser.CompileAn dGetParserCache Item(String
virtualPath, String inputFile, HttpContext context)
at System.Web.UI.T emplateControlP arser.GetCompil edInstance(Stri ng
virtualPath, String inputFile, HttpContext context)
at System.Web.UI.P ageParser.GetCo mpiledPageInsta nceInternal(Str ing
virtualPath, String inputFile, HttpContext context)
at System.Web.UI.P ageHandlerFacto ry.GetHandler(H ttpContext context,
String requestType, String url, String path)
at System.Web.Http Application.Map HttpHandler(Htt pContext context, String
requestType, String path, String pathTranslated, Boolean useAppConfig)
at
System.Web.MapH andlerExecution Step.System.Web .HttpApplicatio n+IExecutionSte p.Execute()
at System.Web.Http Application.Exe cuteStep(IExecu tionStep step, Boolean&
completedSynchr onously)
Source: System.Web
Message: External component has thrown an exception.
Stack Trace:
at
System.Web.Comp ilation.BaseCom piler.ThrowIfCo mpilerErrors(Co mpilerResults
results, CodeDomProvider codeProvider, CodeCompileUnit sourceData, String
sourceFile, String sourceString)
at System.Web.Comp ilation.BaseCom piler.GetCompil edType()
at System.Web.UI.P ageParser.Compi leIntoType()
at System.Web.UI.T emplateParser.G etParserCacheIt emThroughCompil ation()
*************** *************** *************** *************** ***********
Either way there is nothing like: BC30451: Name 'SearchType' is not
declared.
Where do you get that?
These message are pretty useless without it.
Thanks,
Tom
"Peter Bromberg [C# MVP]" <pb*******@yaho o.nospammin.com > wrote in message
news:8C******** *************** ***********@mic rosoft.com...
Tom,
you want to do this:
Exception ex= Server.GetLastE rror().GetBaseE xception()
at this point, if you want, you could possibly even store the exception in
Session and then do your redirect.
GetBaseExceptio n retrieves the "real" innerException object.
Here's a pretty good article with some more ideas:
http://www.developer.com/net/asp/article.php/961301
Peter
--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com
"tshad" wrote:
This has been driving me crazy.
I have been trying to get the error handling working on my system and can
get parts of it working and others won't work at all.
I found that you can't access session variables from Application_Err or
event, but I need to so I don't need to set up traces to see what they
are
during an error. I am emailing the error condition to myself when it
happens.
So I moved the code to one of my error pages and it works fine if called
directly. So I added this code to my Application_Err or routine:
Sub Application_Err or(Sender As Object, E as EventArgs)
response.Redire ct("/PageError.aspx" )
End Sub
And it goes fine to my error page which emails my session variables to
me,
but when I try to do:
Dim exception As Exception = Server.GetLastE rror()
I get nothing. I assume the Application_Err or routine cleared it.
I then tried to comment out the Application_Err or code so it would go to
the
CustomErrors in my webconfig file:
<customErrors defaultRedirect ="PageUnavailab le.aspx" mode="Off" />
but the page is never called - it goes to the MS Error page. If Change
mode
to "On",
<customErrors defaultRedirect ="PageUnavailab le.aspx" mode="On" />
I get the following page:
*************** *************** *************** *************** *********
Runtime Error
Description: An application error occurred on the server. The current
custom
error settings for this application prevent the details of the
application
error from being viewed remotely (for security reasons). It could,
however,
be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be
viewable
on remote machines, please create a <customErrors > tag within a
"web.config "
configuration file located in the root directory of the current web
application. This <customErrors > tag should then have its "mode"
attribute
set to "Off".
<!-- Web.Config Configuration File -->
<configuratio n>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Notes: The current error page you are seeing can be replaced by a custom
error page by modifying the "defaultRedirec t" attribute of the
application's
<customErrors > configuration tag to point to a custom error page URL.
<!-- Web.Config Configuration File -->
<configuratio n>
<system.web>
<customErrors mode="RemoteOnl y"
defaultRedirect ="mycustompage. htm"/>
</system.web>
</configuration>
*************** *************** *************** *************** *************** *********
I also tried setting up a Page_Error in my program and it never gets
called.
I don't understand why this is a problem.
Tom