Howdy folks, I’m fairly new at programming in C# and I’m having a problem with something that should be really simple.
I’ve got a static method that sends emails after doing some page processing, but it’s having trouble when I publish it out of my localhost environment. Since I can’t really debug a compiled version I put a label on the page then I want this method to use a try/catch
c:\inetpub\wwwroot\IS_Apps\PMLic\WebApps\PMLic\Reports\delinquentRosters.aspx.cs(257): ‘IS_Apps.PMLic.WebApps.PMLic.Reports.delinquentRosters.lbl_Errors’ denotes a ‘field’ where a ‘class’ was expected
I know it has to do with labels being considered “non-static” and the static method can’t address them. If I do this:
private void crap()
{
lbl_Errors.Text = "crap";
}
it works, but to call it I need an object reference. I’m not creating any objects for this process, I just want the label on the page to take a new value so I can read these exceptions on the server. And yes, I’m am getting exceptions just fine, I just need to pass the text to this label, or anything I can read on the page really.
Any advice on passing data from a static method to the screen? This is a web application, so MessageBox doesn’t work either.
To see exceptions set CustomErrors=“off” in web.config and do not catch them in code. Just let them pass through. ASP.NET will eventually catch any uncaught exception and will throw up the familar yellow exception page. If custom errors have been switched off you’ll get the exception details including stacktrace. (once in production you switch customerrors “on” and can then avoid your site/pages spill their guts in case of errors).
You may also want to set debug=“true” in the compilation element. That’ll give you line numbers in the stacktrace.
If you want to print diagnostics output during page processing then add a Trace=“true” in the @Page directive. You can then use Trace.Write to write to the trace output, complete with timings, order in lifecycle etc. Use Page.Trace.Write from controls or HttpContext.Current.Trace.Write from static methods, handlers etc. Once you switch Trace=“false” (or remove the Trace attribute) the diagnostics output will dissapear. With Trace=“true” the trace will even show exceptions (with stacktrace) in red.