One scenario that several people find very useful is to
compile/pre-compile an application or associated class libraries with debug
symbols so that more detailed stack trace and line error messages can be
retrieved from it when errors occur.
The good news is that you can do this without having the
have the <compilation debug="true"/> switch enabled in
production. Specifically, you can use either a web deployment project or a web
application project to pre-compile the code for your site with debug symbols,
and then change the <compilation debug="true"/> switch to false
right before you deploy the application on the server.
The debug symbols and metadata in the compiled assemblies
will increase the memory footprint of the application, but this can sometimes
be an ok trade-off for more detailed error messages.
The <deployment retail="true"/> Switch in
Maching.config
If you are a server administrator and want to ensure that no
one accidentally deploys an ASP.NET application in production with the
<compilation debug="true"/> switch enabled within the
application’s web.config file, one trick you can use with ASP.NET V2.0 is to
take advantage of the <deployment> section within your machine.config
file.
Specifically, by setting this within your machine.config
file:
Listing 1
<configuration>
<system.web>
<deployment retail=”true”/>
</system.web>
</configuration>
You will disable the <compilation debug="true"/>
switch, disable the ability to output trace output in a page, and turn off the
ability to show detailed error messages remotely. Note that these last two
items are security best practices you really want to follow (otherwise hackers
can learn a lot more about the internals of your application than you should
show them).
Setting this switch to true is probably a best practice that
any company with formal production servers should follow to ensure that an
application always runs with the best possible performance and no security
information leakages. There isn’t a ton of documentation on this switch – but
you can learn a little more about it here.
Hope this helps,
Scott