There are a lot of bytes online about handling exceptions in ASP.NET. This article presents a solution you can have running in an hour or two. From the introduction:
“An ideal error page maintains the look and feel of the site, offers the ability to provide detailed errors to internal developers — identified by IP address — and at the same time offers no detail to end users. Instead, it gets them back to what they were seeking — easily and without confusion. The site administrator should be able to review errors encountered either by e-mail or in the server logs, and optionally be able to receive feedback from users who run into trouble. Is this the stuff of dreams? No more.”
The downloadable source code found in the article produces this sort of screen when hit by the developer (i.e. from an IP address in the specified range -- you're no longer limited to localhost!).
I use this implementation on erobillard.com, you can check it out by triggering a 404. The difference between this and the Fjorbes demo is that you, the end-user won't see any detail about the error on my site.
It took me about an hour to install the article's code on my site (but then I wrote it), most of this time was spent modifying the custom error page -- point to a different .css, customize the header and graphic, etc. First-time configuration is pretty quick, it should only take 5-15 minutes for most people.
Read the article.
From Between the Lines:
Here's how it works. Take a look at the topics about which you can write, choose a topic, write and submit your article. Then our panel of judges will review all of the articles that are submitted and choose up to 4 winners each month. At the end of the contest, we will take all of the winning authors and submit them into draw for a Microsoft xBox!
Note to readers outside the country -- entrants must be Canadian but not a resident of Quebec eh. Looks like fun, who's in?
[updated Jan 15: “resident of Quebec” <> “Quebecois” ]
HP declares war on sharing culture
RIAA Radar: a tool that music consumers can use to easily and instantly distinguish whether an album was released by a member of the Recording Industry Association of America (RIAA))
Today is a milestone of sorts, my first article is now live on the MSDN Developer Center! I'm happy with it for a few reasons. First, the topic is thoroughly lazy -- how to build a content management system that can serve up pages based on the extension thrown at it. Want to serve .rtf, .txt, or .rss files that users can save without frigging with an .aspx extension? Here's how. Want to serve your whole site as .htm instead of .aspx (like if you're a Sun shop and want to pretend you don't run IIS)? Here's how. Want to throw in versions for PDAs and printers? Here's how.
Second, all this is demonstrated three times in the article's source, with equivalent code in a global.asax, HttpHandler, and an HttpModule. Want to know which was fastest? Check out the article.
Third, I as able to sneak in a good bit on design. Sure you can jump straight to implementation -- the second half is all hands-on how-to. But in the first half I was able to walk through four stages of my own manner of design -- identification, entity design, system design and context, as applied to the task at hand. The basic approach is to strip as much decoration as possible from the design process. It isn't glamorous, the buzzwords are plain, the point is to get the job done. More examples will flesh out the concepts better, for now it was nice to kick out a sample.
A note on installation. The three versions are found in three folders: “SybilModule,” “SybilHandler,” and “SybilGlobalAsax.” There folders are placed in a location of your choice during installation. Each is intended to run (one at a time) in a virtual folder named simply “Sybil.” So create this folder in your webroot, set it as an application, and copy whichever version you wish to try into it.
Thanks to Kent Sharkey for the encouraging, the hounding, and fixing the spelings, and to Marcie for liking the sound of “Fjorbes Magazine” as much as me. Enjoy!
Rewriting the URL
Provide Custom Hierarchical URLs (Jonathan Goodyear and Robert Lair)
.Text UrlRewriting - The IHttphandlerFactory Approach (by Scott Watermasysk)
Suppressing Extensions Entirely (by Ian Griffiths) -- Nifty. Solves issues of handling postbacks in URLs without periods, propagating querystring parameters and forms authentication.
I'm trying to find a .NET app to manage I.T. workflow including job tickets, help desk calls, app deployment, all that. Let's start with the price point to hit: under $1000CAD. That's around $750USD these days. If the features are all there and it looks good, double that might be acceptable, but don't expect it to be. Here's why.
The market situation is that the best-of-breed products are in the $10k range, which is why you see a glut of ugly dogs cluttering the scene, clamoring for a spot at the dish. Quality and price point should leave no reason for a company to build in-house. But right now, the only choices are either high prices or lousy features, so in every company someone is given the job for two weeks to build "something good enough." Hence the glut. Therefore, two weeks wages is the price to beat. Open source freeware will eventually be the price to beat, but given the current state of comparable .NET projects this won't happen for at least six months and possibly a couple years.
On to the wish list. . .
- SQL Server data store. Eases backup and makes it possible to create custom reports. Should be able to build reports according to parameters for stage (e.g. open/closed), period, project, owner, and assignee.
- Windows Authentication to recognize current user, Active Directory integration when available. Make use of roles to populate drop-downs (e.g. Assign To).
- Preferably integrated with Outlook, with WebForms the second choice. The fewer UIs users need to learn the better.
- SMTP alerts for assignments and completion events. A no-brainer if integrated with Outlook. Should be standard feature, making this feature an add-on is a giant turn-off, but some do it.
- Flexible workflow model (perhaps templated) to allow for different types of jobs: help desk tickets (question and solution, conversation tracking/notes, FAQ/KB generation doesn't need to be built in, but should be possible to add on), server or desktop deployment (order, spec, build/procure, test, deploy stages), software feature request (request, design, develop, test, deploy stages). Each stage should be assignable to an executor and (where appropriate) to an optional approver (ideally but not necessarily allow this to be a role). Each job should have an overall owner/creator and a status (the stage). Each job should allow attachments.
- A Web Services layer seems to be a standard request for new apps. I can't justify it in a workflow app for my own needs, but it should simplify construction and maintenance of the app down the line.
- Not concerned about integration with MS Project. The way PMs use Project does not normally overlap the sorts of jobs tracked in this system. Perhaps a nice-to-have, but not essential to my needs.
- I don't need a client-facing help desk UI, but most orgs would. I'm the one who wants the info organized, so I'm responsible for that task, not the user. While it's reasonable to expect people to search a KB or FAQ first, or to wait their turn for service, I don't believe it's reasonable to require users to do more than describe the issue they're having in enough detail to permit a solution. For the same reason I refuse to fill out forms to "have a sales rep call me." I don't want a phone call, I want to state my question and get an answer. If there is an option to ask a live person, I won't jump through hoops to do it, I'll find another company to answer the question instead. In the long term, that's a company I'd rather be working with. You wouldn't believe the number of companies that don't post their prices on the site. See ya.
- Built with .NET. If the UI isn't Outlook, it should be an ASP.NET web app.
Request Tracker, Scarab (screen shots) and GNATS are well-known open-source freeware apps in the *IX/MySQL arena. All have nice UIs and good feature sets. Nothing compares on the .NET side.
This is what my research turned up (prices USD unless noted):
First, my favourite so far. Simply called Outlook Help Desk, it integrates tightly with Outlook, making use of its templates for the forms and such. It's actively developed and has a freeware KB extension. Click the screenshot, there are many more screenshots under there (the bottom row contains the links). Actively developed. Not freeware, but reasonable at $300USD. One shortcoming is that open tickets do not exist in SQL Server (until you do a "sync"), so it's difficult to build reports about open tickets. Item labels aren't always appropriate for the ways such an app will be used, hopefully its easy to customise.
AdminLog is a decent freeware VB6 app. Source is available for $300. Adequate. No Web UI.
Chameleon is a pay version of AdminLog. Also a Windows app, no sign of a Web UI. A site license is $479.
I've used a demo version of Brightwork, and it's nice. It lives as a web app on SharePoint (or Exchange) and has most of the features described above. Reporting isn't as strong as it could be, and it's expensive. Jobs exist in a hierarchy of folders, a nice organizing feature. I don't have a precise quote, but get the sense it's in the $20k range. http://www.brightwork.com
If Brightwork is a Cadillac, TrackRecord is the Rolls Royce. The site makes it impossible to tell whether it's available separately from CompuWare's DevParter app, which is about $2k per seat. It integrates with Outlook, Project, Source Safe and just about everything else. Seems to win the Visual Studio Reader's Choice award annually. http://www.compuware.com/products/trackrecord.htm
I would be remiss not to mention a simple sample app developed with GenericDB for Classic ASP by Chuck Speerly. This is a sample Return Merchandise Authorization (RMA) application using GenericDB, enhancements and security from Squeek's site, and some custom work by Chuck. Try it by searching for RMA Number 20001, or login as email@example.com with the password “password.” Download it, unpack all including RMA.mdb into an /RMA/ folder in webroot, and it should work without any editing. Simple open source freeware, easy to rework the fields or redesign the screens. There ya go.
And that's the round-up. Nothing ideal, no one in the running to be the Quicken of this market.
What features are on your wish list? Got an ETA on something everyone should know about? Send your Feedback below.