Welcome to AspAdvice Sign in | Join | Help

AspAlliance Simple CMS Plugin

I’ve been interested in plug-in applications for ASP.NET for a while now.  I think it can be a very powerful way to quickly add new functionality to an existing site without significant rework of the site being extended.  The architecture that makes this possible is the HttpHandler and HttpModule combination that, in fact, is what makes ASP.NET work in the first place.  One simple example of such an application, which is built into ASP.NET, is the application trace viewer, commonly known as trace.axd.  Trace.axd is simply an HttpHandler that is mapped in the server’s configuration file (machine.config or the server’s web.config, in C:\WINDOWS\Microsoft.NET\Framework\[version]\CONFIG).  You’ll find trace.axd defined here:

<httpHandlers>

<add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />

</httpHandlers>

What’s powerful about this kind of application is that it can be easily configured, added to some sites, removed from others, etc.  Let’s say you consider trace.axd a security risk.  You can remove it from all sites or from any one site.  Or you can rename it to “securetrace.axd” and add some security by making it much harder for someone to guess the file’s location.  And of course you can lock it down using .NET security, like so:

<location path="trace.axd">

<system.web>

<authorization>

<allow roles="Admins"/>

<deny users="*"/>

</authorization>

</system.web>

</location>

Anyway, you can see why this kind of plug-in can be very powerful.  One of the best sample applications out there which demonstrates many best practices for this kind of application development is ELMAH, or Error Logging Modules and Handlers [gotdotnet] [author home].  Read that article if you’re considering writing your own plugin.

Using this approach, I created a Cache Manager plugin last year.  This was my first foray into a real world application using these techniques.  The result is a very simple plugin that provides cache management functionality to any ASP.NET web site (1.x or 2.0).  You can download AspAlliance.CacheManager for free.

Enough background though – this post is about a CMS tool.

AspAlliance.SimpleCms – A Simple CMS Application Plugin (NOT a CMS Application!)

Earlier this year while I was updating AspAlliance.com I found myself wishing there were an easy way for me to simply edit certain pages with my site’s look and feel without having to migrate my site over to some mammoth CMS application (of which there are many) or portal/community application with CMS as a feature.  I asked around to see if anybody I knew had something like this – nobody did, but several were wishing for the same thing.  I talked to some component vendors and CMS application builders, and none of them had anything that fit what I wanted, either.  So in the end I decided to build it.  I talked with Dave Wanta, who was also interested in such a tool, and came up with some specs, and about a month ago I started Brendan, one of my interns, (with 0 ASP.NET knowledge when he began in May) on the task.

Brendan blogged about the tool a couple of times.  It’s now very close to complete.  Hopefully in the next day or two I’ll have a live version running on AspAlliance.com.  The basic idea for the application is that it should be a plugin that requires no code changes in the host application, just some configuration to set things up (wiring up the modules and handlers, and adding the CMS config section).  With just that, it should then allow the administrator to list all pages, edit individual pages, enable/disable pages under the CMS’s control.  It allows any arbitrary path to be used for the content under its control, and this is configured within the web.config.  For instance, SimpleCMS might be set up to manage *.cmsx or /cms/*.aspx.  Each page will simply be a blog of HTML that is placed within a content region which is in turn wrapped by a user-configured Master page (or header and footer ASCX controls), allowing for a common look and feel.  The system will also define the page’s filename, keywords, description, title, etc, allowing for a search engine optimized final result.

We still have a few more bugs to work out before we release a public beta, but I’ll be dogfooding it on some new areas of AspAlliance.com very soon.  If you have a wish list of features, please add your comments and I’ll see what I can do.

 

Published Wednesday, July 19, 2006 2:05 PM by ssmith
Filed under: ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: AspAlliance Simple CMS Plugin

Sounds a lot like the first thing I did with .NET, trying in 2001 and getting it mostly right in 2002. That ugly code is surprisingly still running on CoasterBuzz.com. It sees .htm requests, maps them to a handler, and loads a page with placeholders. Then, based on the request, fills in the placeholders with stuff, most notably editable HTML blocks.

It's still not as simple as I would have liked, but because I so rarely just add a page anymore, I doubt I'll use anything like it going forward now that we have master pages.
Wednesday, July 19, 2006 2:43 PM by Jeff

# Free .NET CMS Plugin ASPAlliance.SimpleCMS Launched

Last week SimpleCMS was released as a beta. Please download it and give it a try in your ASP.NET 2.0

Monday, August 28, 2006 9:28 AM by Steven Smith

# re: AspAlliance Simple CMS Plugin

hey, so simply :D

Saturday, December 02, 2006 9:48 PM by 3DSL Eugen

Leave a Comment

(required) 
required 
(required) 
Enter the code you see below