"Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy-path to all interactions."
Built from the ground up (not simply a DSL on another framework)
Removed underlying framework limitations and feature hacks
Removed need to reference assemblies you don't need, keeping things light
Ability to run anywhere, including ASP.NET/IIS, WCF, self hosted, and any OWIN out of the box
Super lightweight action declarations for GET, HEAD, PUT, POST, DELETE, OPTIONS and PATCH requests
View engine integration for Spark, Razor, dotLiquid, SuperSimpleViewEngine, and others
Request path matching with advanced parameter capabilities, plus the ability to replace the path matching strategy with custom implementations for your needs
Easy response syntax, enabling you to return things like int, string, HttpStatusCode and Action elements without having to explicitly cast or wrap your response - you just return it and Nancy will do the work for you
A powerful, light-weight, testing framework to help you verify the behavior of your application
Too many apps are throwing too many errors out there, resulting in confused users, lost business, and endless frustration.
We believe Exceptionless can help the development community become more in-tune with their code by making those errors more transparent, trackable, and squashable. More importantly, we want to support developers building and shipping better code for their users.
You'll find instructions on getting started there, including setting up your hosting environment if you want to host things yourself. If you would rather host with us, we offer easy and affordable plans.
If you have a feature request or issue, let us know on the issue tracker. We are 100% committed to supporting the project.
In short, we want to see what the community can do with our baby, which we consider a great development tool. The open source movement has provided innovation throughout the industry, and we cannot tell you how excited we are to be a part of it.
We hope you will take it, add to it, suggest great new features, and report bugs, but most of all we hope you will use it to build better apps for the world.
The Exceptionless Team will continue to work on a road map of features and improvements, all while providing support to developers that want to contribute.
Exceptionless 1.3 brings with it both server and client changes, including open sourcing the project (which we're super excited about!), some minor updates, and a few bug fixes. Check out the changelog items below, and let us know if you have any questions.
This is yet another story of an elusive bug that, without a proper error reporting service, would have gone un-noticed for a very long time.
When third-party software and services interact with your code, in any way, you have to be wary that their data may be different from yours. In this instance, our client was parsing some XML that included an unfriendly cookie name. Lets see what happened next...
The fix was relatively simple. The client now checks for "$" in cookie names within the affected method and just doesn't handle them.
Tracking errors like this is what we're all about. There are hundreds of thousands, probably even millions, of bugs out there right now that throw exceptions every day but manage to remain hidden in the shadows of code written by professional developers.
It's not a sign of poor programming, it simply comes with the territory. You will have bugs, big and small, in every project you work on. The difference is, with Exceptionless, you can actually be aware of, and fix, them!
Maybe you've got this awesome new web app that you're ready to go live with, or maybe you're working on a project that is already customer facing but you've got major new features rolling out and want to make sure all goes well.
We both know there's going to be something that isn't completely right after launch. It might be a big bug stopping certain users from placing orders on your site, or it might be something that won't even affect your customers. It might be highly visible, or completely hidden from your view. Either way, you want to know when that error occurs and what the details are. That's where Exceptionless comes in.
The Exceptionless platform provides a great real-time dashboard view of your errors, but our email notifications allow you to be absolutely in touch with any errors that may be occurring within your application.
There are several email notification options for your app's exceptions.
To receive notifications, you need to turn them on under the "My Account" section, in the "Profile Information" tab. This option should be on by default. Then, you can view the below options under the individual project settings by clicking on the cog/gear icon next to the project name at the top of your dashboard.
Lets take a look at the different options:
Daily Project Summary
This is simply a summary of your project, including error counts, etc, that you can receive each day.
You can mark an individual error as critical, and then check this box to receive email notifications each time that error occurs.
If you have marked an error as fixed, you can check this to get an email notification if it ever rears it's ugly head again.
Error Occurrence Notification Frequency
These are fairly self-explanatory. How often would you like to receive emails?
_Note: _You can also turn notifications off for individual errors by going to Options>>Disable Notifications while inside a specific error.
As with every new release of software, things change. And, like we all expected, there wasn't an exception to that rule when Microsoft introduced Internet Explorer 10 into the mix.
Everyone coding for the web had the normal things to worry about, of course, like design formatting, speed, and support, but one of our clients experienced something that would have taken a long time to catch if they hadn't been using Exceptionless' real-time error reporting.
Who Adopts New Versions of IE Right Away, Anyway? #
Like many, the client's web team doesn't necessarily adopt the latest version of IE right away, much less use it as their main browser. Unfortunately, that leads to little immediate exposure to potential bugs.
Lets explore how this came back to bite them, and how Exceptionless helped them treat the wound quickly.
Users of the client's eCommerce platform that were already using IE10 were able to view and use the website fine, until they logged in. At that point, everything broke. They couldn't checkout, browse, or submit contact forms.
Because the team wasn't using IE10 regularly yet for testing actual logged-in user transactions, they were clueless!
Luckily, Exceptionless reported the customers' errors and the team was able to take notice of the recurring bug within days, rather than weeks or months.
After the error was reported in the Exceptionless Dashboard, the team was able to use the attached details to trace the root of the issue back to the server's definitions of which browsers support modern cookie encryption.
All the server needed was a routine update that had not been performed! Bam - fixed.
We cover the basic features of the Exceptionless platform on our feature tour page, but we wanted to give everyone a deeper look into all the information available via the web-based, real-time .NET error reporting admin area.
The Exceptionless Dashboard features a quick overview of the exceptions for the currently selected project. It also updates in real-time, so you can watch exceptions roll in.
This is a great place to glimpse your exceptions by total, unique, new, or per hour. The most frequent and most recent exceptions are also displayed here, along with a graph representing your total and unique exceptions. You can go directly to an error's details by clicking on it.
At the top of the page, throughout the admin, you can:
Change the project you are currently viewing
Go to that projects settings
Adjust the date range
Show/Hide hidden errors
Show/Hide fixed errors
Show/Hide "Not Found" errors
Show/Hide Errors & Select Date Range
View Most Recent, Most Frequent, and New Exceptions #
On the left side of the dashboard, you can select to view your Most Recent, Most Frequent, or New (first time) .NET exceptions.
The most recent report lists your errors individually with the one that occurred last at the top. It also tells you exactly how long ago the error occurred. You can click into the exception to view details.
Each of these reports lists the respective error type with a summary, the count, when the error first happened, and the last occurrence. Most frequent is ordered by count, and new is ordered by most recent.
If you click into any error, Exceptionless will show you the error stack, which includes the number of occurrences, when it first happened, and the latest re-occurrence. You can adjust the date range on this page, like the rest, and you also get a nice graph of that error's occurrences over time. Each individual time the error triggered is listed below the graph, and you can click into each instance separately.
Before we do that, though, I'd like to point out another major feature of the error stack page..
Above and to the right of the graph are two buttons: "Mark Fixed" and "Options". Mark fixed is exactly what it sounds like, and if you click on the "Options" button it drops down with the following choices:
After you click into an individual error instance, you will see the following tabs.
This page shows you a quick overview of the error, including the stack trace. It includes the date and time, type, message, platform, URL, and referrer. You can also go to the previous or next occurrence.
This tab displays a few overview details, then gives you a list of loaded modules related to the error.
The request view gives you the request details, including date and time, http method, url, referrer, client IP, user agent, browser, browser OS, device, and whether or not it's a known bot. You also get Post Data.
Because you needed all the data, the environment tab displays time and date, machine name, ip address, processor count, total, available, and process memory, OS name, OS version, architecture, runtime version, process ID, process name, and command line details. It also has client information, such as install date, version, platform, submission method, application starts, and errors submitted.
Naturally, you can manager your projects, organizations, and account, but we also have pretty handy feedback and support tools so you can let us know how we're doing! Your feedback and comments are important and provide direction to the code.
In short, the tool offers extremely helpful insights into the world of your web application's bugs. Whether internal or customer-facing, knowing when, where, and how many exceptions are being generated makes it easier for you to track them down and squash them. And when you've fixed it, regression notifications are there to let you know if it rears its ugly head again.
Recently, a client contacted us and gave us a pretty incredible case study. He found a huge number of "leaking" exceptions by eliminating all of the empty catch statements in his ASP.NET code and sending an exception to Exceptionless instead. By doing so, he was able to track down about 12 individual bugs and get rid of over 50 exceptions per hour by fixing them. That's 1200+ exceptions per day - gone!
"This gave us a picture of just how many poorly written methods were leaking exceptions. The answer was, A LOT. So, even though these weren't customer facing, they were expensive and a good indicator of code quality. In just a couple of days, we were able to eliminate the majority of them completely." - Eric Burcham
After speaking with Mr. Burcham further, he explained that while there were only about 12 individual bugs, the number of times that those bugs were occurring in different areas throughout the code (an ASP.NET eCommerce solution) was numerous. Luckily, he was able to use several multi-line find and replace actions to make all the changes relatively quickly and get things back on track.
But I can already throw an exception in my catch block... #
While you can throw an exception in a catch block normally with .NET, Eric was able to utilize Exceptionless' intelligent error grouping, notifications, and detailed reporting to pinpoint the problems and deal with them accordingly. Then, he was able to monitor the decline of occurrences and make sure that there were no regressions. That's pretty powerful, we think.
We have all worked on projects, large and small, where tiny, one-off bugs went unnoticed for a while before they were finally reported by a user or discovered by a developer. In some instances, these bugs probably affected the end-user's ability to use the service, purchase an item, etc, meaning that there was a direct impact on the bottom line.
What if you didn't have to worry about .NET exceptions going unnoticed anymore?
What .NET developers needed was a tool that focused on error reporting by logging, grouping, and sending notifications. They needed flexibility through custom objects and a fluent API. They needed every error detail presented in a organized, readable manner. The even needed charts that clearly showed their progress in squashing the tens, hundreds, or thousands of daily exceptions that they didn't know they were occurring.
We needed all that, too, so we built a tool that does it all for us!
What a .NET exception reporting tool has up its sleeves #
When we set out to build Exceptionless, we went through hundreds of possible features, and even toyed with building a larger product that including other functionality, but in the end we decided we wanted it to do the following things really well.
Send error notifications
Group exceptions intelligently into stacks
Show top errors and allow them to be prioritized
Provide detailed error reports, including stacktrace
Have a dashboard with an immediate view of error statistics and trends
Allow custom objects to be added to reports
Allow unlimited users per organization
Give developers a way to **mark exceptions critical, fixed, or **monitor for regressions
Provide real-time updates, as exceptions happen
Support offline usability in scenarios where the developer is traveling, etc
Be able to be installed in less than 5 minutes
Why Exceptionless is a must-try for .NET developers #
You should give it a shot if:
Finding that bug 2 weeks sooner could have saved you or your company a lot of money
Customers were lost because of a bug on production that you couldn't see locally or in the development environment
You fixed a bug in one spot, only to find out that it was happening in several other places as well
There might be errors here or there, but they probably aren't affecting very many users (hint: they probably are).
You or your team are making a lot of changes in the next sprint, and you really want to make sure you know when a bug gets introduced
and the list goes on...
And of course, we're here to help!
If you have any issues or questions, just let us know! You can contact us here on the website, or via the support button on your Exceptionless dashboard.