ASP.NET Control Panel

Something I think would be a nice addition to ASP.NET (ideally shipping in 4.0 or N.0, but a community effort would also work) is a control panel that can be plugged into any application.  A control panel would provide some or all of the following capabilities to a web site administrator:

  • View Page Trace output
  • View Recent Exceptions
  • View Cache Contents and Clear Cache
  • Other tasks as plugins (manage membership, db connections, whatever)

With ASP.NET 1.0, support shipped out of the box for viewing a site’s trace output using an HttpHandler, by default called trace.axd.  This can provide valuable diagnostic information, and of course can be locked down using standard authentication techniques (e.g. setting up a <location /> element in web.config).  It also has some built-in security, such as a setting that locks it down only to localhost, if desired.  You can learn more about ASP.NET Tracing here if you’re unfamiliar with it.  I’m always surprised when I give my tips-and-tricks talk how many people in the audience are unfamiliar with this feature, but in the defense it doesn’t get much press time these days.

For logging exceptions and viewing them online, ELMAH is one of the oldest and best choices available (others include more general logging frameworks like log4net).  ELMAH stands for Error Logging Modules and Handlers and is an open source project, originally introduced by Atif Aziz and Scott Mitchell on MSDN.  ELMAH provides, among other things, the ability to set up a handler that will allow you to view your site’s unhandled exceptions online.  The exceptions may be persisted in memory or a database or sent by email or any number of other configurable options, but the key aspect that relates to an online control panel is the web viewable piece, accomplished via an HttpHandler.

For cache viewing and management, the ASPAlliance CacheManager is the existing plugin that fills this need.  It is modeled after ELMAH and provides the ability to view and remove individual items in the cache, clear the whole cache, and to remove individual pages’ output caches.

Today, if you want all of these capabilities, you need to configure tracing, download and configure ELMAH, and download and configure CacheManager.  There is no integrated solution that bundles these (and potentially other) features together.  Further, none of these applications know about the others, so there are no navigation links between them and their locations can be whatever you want, so if you’re not consistent it can be difficult to remember what URL you set up for each of these.

A control panel would basically incorporate all three of these projects into a unified plugin with centralized configuration and a single assembly and config deployment model.  Additional plugins could be added as well, such that they were accessible from the control panel.  I suppose the *simplest* version of such a control panel would just be a UI that knew the locations of the other pieces and provided the navigation to them, but obviously the ideal solution would be one that updated the UI of all three systems into something cleaner, prettier, and easier to use.

So, what do you think?  Should Microsoft invest in something like this?  Is it a worthwhile community project?  Do you think many ASP.NET developers and site administrators would find this helpful?

  • Brendan Enrick

    I think this would be very nice, since I add this stuff into projects separately already. It would be very convenient to be able to get them all together as one tool.

  • ASP.NET Control Panel

    You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  • ASP.NET Control Panel : Steve Smith’s Blog

    Thank you for submitting this cool story – Trackback from DotNetShoutout

  • Andrei Rinea

    Good idea! I would like to see these too in 4.0 :)

  • Dave Ward

    If done well, it would definitely be nice. I use ELMAH a lot, and think it’s excellent. Something like that, expanded to cover more aspects of the site would be a great addition.

    Seems like they were thinking in that direction with the "ASP.NET Configuration" site in 2.0. Execution on that wasn’t so great though. If it were something of that quality, I wouldn’t be interested.

  • brady gaster

    I think this is an excellent idea. I’d love to see it done in MVC, but I bet you knew I’d say that.

    Keep us updated on this.

  • ASP.NET Control Panel : Steve Smith’s Blog

    Pingback from ASP.NET Control Panel : Steve Smith’s Blog

  • Michael K. Campbell

    Yeah, the trick is that it would need to work in MVC and ‘classic’ ASP.NET.

    I also wonder how MS has considered this from a security and maintainability standpoint too…

  • ASP.NET Control Panel : Steve Smith’s Blog

    DotNetBurner.com – news and articles about .net DotNetBurner

  • ssmith

    @Michael,

    It would be a separate HttpHandler, so it should work fine with ASP.NET MVC (as should all of the standalone solutions above).

  • Travis

    I like this idea, something you could just "drop in" and of course with theme support would be even better.

  • Daily Find #119 | TechToolBlog

    Pingback from Daily Find #119 | TechToolBlog

  • Scott Mitchell

    This would be an excellent idea. I think it would need to be community-driven, though.

    As you alluded to, it would need to be based on a series of HTTP Handlers, like ELMAH, so that you can add the control panel to the site by just dropping a DLL in the Bin folder, registering the HTTP Handlers, and adding some URL authorization rules to lock down the pages.

    Another thing missing from ASP.NET that would be great here is a control panel for managing Membership and Roles. I know the ASP.NET Website Administration Tool does this, but it doesn’t work remotely. So it would be nice to have screens to create/edit/delete users and roles, much like this tool: aspnet.4guysfromrolla.com/…/052307-1.aspx

  • Bob Kosscus

    I thoroughly agree – this would be an EXCELLENT idea. I know I for one would you this extensively!!

  • Mohammad Azam

    This is an awesome idea! We really need a single place to view all this stat.

  • G. Andrew Duthie

    Love the idea.

    I’m curious what people’s requirements would be for such a control panel.

    My top two would be pluggability and minimal config.

    Pluggability meaning that any logging or admin component that implemented a particular interface could plug right into the control panel UI (as a new tab or whatever the UI paradigm was) with little or no install/config required.

    Minimal config meaning all I do is drop the control panel DLL into the bin directory, and add a config element telling the control panel which Role should be able to see the control panel, and it does the rest, perhaps adding a tab to the edge of the page that can be dynamically expanded, similar to what UserVoice (http://uservoice.com/) does.

    If you think about something like GraffitiCMS plug-ins, that’s the kind of model I think would be great for adding new functionality to the control panel…just point it to a DLL, and it does the rest.

    What else do folks think a control panel would have to have to be useful?

  • Scott Forsyth

    How about adding this to IIS 7 manager? It’s easy to write plugins for it, and then there is just 1 install on the server and all clients tunnel through IIS manager, so they don’t have any real install. It’s not as universally available as a website would be, but it’s easier to support and install for the server admin.

  • ssmith

    @Scott Forsyth,

    I (almost) never look at IIS; I use the browser. I think most non-admin web developers would be more inclined to have something web-based, but that said, I can totally see the value of an IIS add-in for admins, so having both would be ideal.

  • G. Andrew Duthie

    Steve,

    Agree on IIS. Particularly in a hosted scenario, it just wouldn’t occur to me to look to IIS Manager for this, though I did recently find out that OW supports remote admin through IIS Manager, which is cool.

    Most of the time I’m managing my site, I’m doing it via tools I wrote on my site. So while having IIS integration would be cool, I agree that web-based would be my first choice, particularly something easily integrated into an existing site.

  • Scott Forsyth

    Steve/Andrew,

    I can’t argue with that if you and other people aren’t inclined to use IIS Manager. I think that IIS Manager has huge potential, and there will be even more over time, but I understand your point that the reach isn’t enough to make it the exclusive option.

  • Ceweqsakti

    Is it last update from asp.net?