Adding Rss Syndication Reporting to BlogEngine.NET

Rss Syndication Reporting is the newest Sueetie Analytics feature coming in Version 3.2.  This is the realization of a long-standing goal to take back control of my BlogEngine.NET feeds from FeedBurner. The longer I work online the more I realize the importance of owning the data my sites create.  There are other reasons I’ve come to think turning a feed over to a Third Party is a bad move, but the bottom line is that I want my feed back.  FeedBurner doesn’t care about it like I do.  If you’re a fellow Burner then you probably know what I’m saying.

Sueetie Rss Syndication Analytics reports on the number of feed subscribers and the number of times a blog post was read in a newsreader like RSS Bandit or Google Reader.  It produces essentially the same basic reporting as FeedBurner.  UserAgent and IP are being recorded, but are not reported on in the initial v3.2 release. No pie charts on origination or newsreader in 3.2.  Here are screenshots of Blog Rss Syndication Reports from a Sueetie Development server.  First the Subscription and Reach report followed by the Post View Report.

Implementation

There are two data points: 1) when a client hits http://mysite/blog/syndication.axd to retrieve the feed (a subscriber) and 2) when someone clicks on a post title in RSS Bandit to read the post (a post view, or reach.)

The Subscriber action is recorded in the BlogEngine.Core SyndicationHandler ProcessRequest() method. One entry per client IP per day. Some may take issue with that logic since it does not account for feed caching by services like Google.  We’ll see over time if this has an impact on the Subscriber numbers. In my thinking, Subscriber counts are more of a vanity number and that the number we should care about is Reach, or the number of times people are actually reading our content.

Adding Post View (Reach) to BlogEngine.NET syndication required reinstituting the old trick of appending a blank.gif to the post’s content which logs the post view.  The .GIF is processed by an HttpHandler, something like

<img src=”http://mysite/myhandler.ashx?id=[postid]” />

Myhandler.ashx passes off logging the request to a background thread and loads the image.  Here’s the core logic of the handler.

public void ProcessRequest(HttpContext context)
{
    string _ip = context.Request.UserHostAddress;
    HttpResponse Response = context.Response;
    HttpRequest Request = context.Request;
    string postID = Request.QueryString["id"];
    BlogCommon.FireAndForgetRecordBlogRssView(
        new SueetieBlogRssView { PostID = new Guid(postID), RemoteIP = _ip });
    string url = "/images/shared/sueetie/blank.gif";
    Response.Redirect(url, true);
}

I’ve been using FeedBurner at DBVT.COM for some time, but the honeymoon ended quickly and I’m looking forward to returning to the pure BlogEngine.NET syndication.axd stream. If you find that your DBVT.COM feed goes dry after Sueetie v3.2 is released, it’s because We’ve Moved. I’ll be sure to let you know ahead of time, but FeedBurner’s days are numbered now that Sueetie Analytics does Rss Syndication.

Article written by

A long time developer, I was an early adopter of Linux in the mid-90's for a few years until I entered corporate environments and worked with Microsoft technologies like ASP, then .NET. In 2008 I released Sueetie, an Online Community Platform built in .NET. In late 2012 I returned to my Linux roots and locked in on Java development. Much of my work is available on GitHub.