Subscribe: DotNetNuke Developer Chris Hammond
Added By: Feedage Forager Feedage Grade A rated
Language: English
dnn  dotnetnuke  download  module  new  open  project  release  signalr  site  source  studio  templates  visual studio  visual 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: DotNetNuke Developer Chris Hammond

.NET Posts from Chris Hammond

I've been working with DotNetNuke (DNN) since January 2003. I specialize in DotNetNuke Upgrades, Module development, and implementations. This blog contains posts over the years regarding tips and tricks on how to do things within open source ASP.NET syst


15 Years of DotNetNuke

Tue, 26 Dec 2017 19:46:08 GMT

15 years ago a guy named Shaun Walker released something special unto the world. Something that would ultimately change the way Microsoft approached Open Source. Shaun released a CMS tool called IBuySpy Workshop, a modified version of IBuySpy Portal. The IBuySpy Workshop ultimately became DotNetNuke, now known as DNN (I’m nostalgic for DotNetNuke btw).

Since then the landscape of open source in the Microsoft world has completely changed, the source code for ASP.NET is available to anyone, the .Net Foundation is around to support key open source projects in the Microsoft world, and thousands of developers work on .Net projects every day. 

In 2015 Shaun Walker had some blog posts about the History of DNN, and rather than trying to write up all of my opinions on the timeline of the project, I’ll point you to his blog series with excerpts from the DNN7 WROX book. Start reading with this post and follow the “next” links at the bottom.

What has DotNetNuke done for me? It has allowed me to travel the world, meet thousands of people and help thousands more. It has allowed me to go from simply being a software developer to being an expert in an industry. It has allowed me to learn that I can speak in front of hundreds of folks, and put on my “announcer” voice whenever I feel like sounding important! (Check out my latest DNN Tutorials for a sample!)

Thank you to everyone who has contributed to DotNetNuke over the years, and a big thanks to Shaun for everything he has done for all of us.

Here’s a photo of the first time I met Shaun and Scott Willhite in person, in Lexington, Kentucky



Migrating Codeplex Projects to GitHub fix!

Tue, 10 Oct 2017 01:48:27 GMT

I’ve been trying for months to migrate my Codeplex Projects over to GitHub, but always got stuck at this step on GitHub (trying to get credentials for CodePlex:


I enter my Codeplex username and password, but it always comes back and asks me for the credentials again, they never work.

Well it’s been YEARS since I’ve checked anything into Codeplex, and I remembered that back in the day, I had to connect with different credentials in TFS, so how do you find those?

  • Navigate to the project in Codplex
  • Choose Source
  • Choose the “Connect” option
  • Look at the Username field, in my case it was SND\SOMETHING_CP

Using that username and my normal CodePlex password, I was finally able to get the migration completed for one of my projects, only 21 more to go….

LetsEncrypt - Cannot update IP SSL Bindings because total number of allowed IP addresses per site will be exceeded.

Mon, 03 Apr 2017 18:51:00 GMT

If you’re not switching all of your websites to utilize SSL encryption by default, you’re going to miss out on search results for many years to come! (see here for more info)

In the past, the notion of switching all your sites to use SSL would be daunting and a costly affair, especially if you have too many different websites to count (what, not everyone has this problem?).

I’ve been recently setting up a few websites on Azure for test purposes, and decided to look into how I could setup SSL for those sites. I came across a blog post from Rick Strahl regarding using Let’s Encrypt, for free SSL configurations. Basically with Let’s Encrypt, you can get a free SSL certificate, the main catch though is that they need to be renewed very frequently, they expire in 90 days.

From there I came across a Site Extension for Azure that can be setup to automatically configure, assign, and even renew these certificates. This takes quite a bit of work to get setup, but once setup, requesting certificates is super simple. As you add more “custom domains” to your Azure instance you can setup a new certificate for each. One problem I ran into however is that once I had setup two certificates, the extension started throwing an error when trying to add new certificates for domains. The error was:"

Cannot update IP SSL Bindings because total number of allowed IP addresses per site will be exceeded.
CloudException: Cannot update IP SSL Bindings because total number of allowed IP addresses per site will be exceeded.

This I believe is possibly due to my limitations on the Basic App Service that I have setup, where you are limited to SSL IPs, but you can have unlimited SNI SSL certs. Completing the binding process for the SSL certificate is easy, simply go to your Azure Portal, navigate to the App Service and then the SSL Certificates section. Click the Add SSL Binding button, choose your domain and select the appropriate certificate!

Boom, SSL setup and ready to go!

Update: Looks like I had a setting configured incorrectly in the Site Extension, I simply removed the web app setting letsencrypt:UseIPBasedSSL  see this thread:

Visual Studio 2017 Development Templates for DNN (DotNetNuke)

Tue, 07 Mar 2017 06:20:15 GMT

With the release of Visual Studio 2017 coming in a few short hours, I am proud to release the latest update for the Christoc’s DotNetNuke Extension Development Templates!

With this release I’ve updated my suite of DNN extension templates (modules and themes) to support Visual Studio 2017.

You can download these templates from Visual Studio 2017, by going to the Tools/Extensions menu. From there you can search the Online option for “DotNetNuke” choose the “DotNetNuke (DNN) Development Project Templates” option.


Other Download Options:

If you have any feedback, please visit the Project’s Github Repo

Here’s a quick video of how to install the templates in Visual Studio 2017

width="640" height="360" src="" frameborder="0" allowfullscreen="">

Here’s a quick video on how to make create your first DNN module. After creation the video walks you through the compilation and installation of that module into your DNN site.

width="640" height="360" src="" frameborder="0" allowfullscreen="">

DNN Tip: Pruning the EventLog with EventLogConfig

Mon, 06 Mar 2017 02:32:32 GMT

In an earlier blog post I talked about the EventLog table and the Exceptions table, specifically in terms of how to “clear” the tables out. This post will talk specifically about how to keep the EventLog table cleaned up to begin with.

In DNN you have the ability to configure if you would like specific EventLogTypes to be tracked or not. By default in DNN there are over 100 different events that can be tracked in the EventLog table. Many of these are turned off by default, you can configure them to be “on” by going to the Admin Logs page in the Persona Bar, and choose the Log Settings tab


In doing so you will be presented with a page that looks similar to


From here you can click on the Edit pencil on each row and enable or disable the Logging setting


You can also turn options on such as email notifications and the Keep Most Recent entries option


Some of the default options in DNN will have the Keep Most Recent option configured to a low number, like “10 Entries” but some will have them set to All. This can cause the EventLog table to fill up with many many many events, depending on how much traffic your website gets. You can go through and set these all manually through the ADMIN UI, or you can do it in bulk in the database with this simple SQL statement:

update Eventlogconfig
set keepmostrecent = 10

If you’re using the SQL Console page you can use this statement

update {databaseOwner}{objectQualifier}Eventlogconfig
set keepmostrecent = 10

Warning: You might actually want to keep ALL logs for your site, depends on your industry and needs, but I prefer to keep mine pruned to try to keep the database smaller, more manageable and better performing.

DNN Tip: Monitoring the Exceptions and EventLog tables

Mon, 06 Mar 2017 02:16:01 GMT

At some point, if you manage a DNN based website long enough, you are going to run into a problem where your database seems to have grown WAY bigger than it should be. I’m not talking a couple hundred megs, I’m talking gigabytes, lots of gigabytes. This post will hopefully help you get that under control.Tonight, I had a DNN instance that I was looking to migrate to Azure, in preparation for this I remoted into the web and database servers to see what the files and database looked like. The database MDF file was almost 1.5gb in size, for a DNN instance that has 5 portals, and very very little activity, this was concerning. I knew where to start looking though, there are two tables to start with, Exceptions and EventLog. The EventLog is tied to the “Admin Logs” in DNN 9, in earlier versions of DNN the menu item was Event Logs or even Event Viewer. Running the following simple SQL query will get you an idea of how many rows are in those count(1) from Exceptions with (nolock) select count(1) from EventLog with (nolock)If you’re running this in the SQL Console on your DNN site you might run it withselect count(1) from {databaseOwner}{objectQualifier}Exceptions with (nolock) select count(1) from {databaseOwner}{objectQualifier}EventLog with (nolock)This will give you a “count” of the number of rows in each of those tables. In my case, the EventLog table only had 394 records, but the Exceptions table had 300k+. That’s a pretty common cause of database size creep in DNN. Ultimately what my issue was, I had one site that still used “SolPartMenu” in the Containers for the skin, and with DNN9, those no longer work, and every request that tried to load that site (mostly search engines hitting it) caused multiple records to be thrown into the EventLog and Exceptions table. Message:Object reference not set to an instance of an object. StackTrace: at DotNetNuke.UI.Skins.Pane.LoadModuleContainer(ModuleInfo module) at DotNetNuke.UI.Skins.Pane.InjectModule(ModuleInfo module)Now, the question is how did I know what the cause of that cryptic error message was? Well, I had just spent some time with a customer of mine this weekend upgrading their website, and they ran into the same problem, so it was fresh in my head, and I was easily able to correct this.But let’s get back to the topic of the post, the Exceptions and EventLog tables. DNN has a way to “purge” the eventlog built into the system, and most “types” of events only get stored 10 times, so when the 11th event comes in, the first one gets cleared from the system. But, the exception Events also get logged to the Exceptions table, and there doesn’t appear to be anything in DNN that cleans that table up automatically. Because I upgraded the site to DNN 9 well over a month ago, I had hundreds of thousands of exceptions in the table. So I needed to get this cleaned up, that’s easy with the following SQL statement.truncate table Exceptionsor the DNN SQL Console versiontruncate table {databaseOwner}{objectQualifier}ExceptionsThat forces the table to be purged, and then using SQL Server Management Studio I was able to run a SHRINK command on the database, bringing the files back down to an expected 30 mb.Now you might think, well can’t I do the same on the EventLog table? Unfortunately the simple answer to that is no. The longer answer is YES, but you’ll want to look at Sebastian’s SQL script for doing so:[...]

Visual Studio 2017 hangs on opening Project/Solution with "Opening the files"

Tue, 21 Feb 2017 03:58:53 GMT

I ran into a problem this evening with Visual Studio 2017 hanging when opening my Solution that I'm working on for my DNNTemplates VSIX project. It would open up solution explorer, it would also open up the TABS in visual studio, but it wouldn’t complete the process and would hang on “Opening the files”.

Basically every time I opened the solution, no matter what I tried, rebooting, deleting the .SUO file, deleting the .USER files, nothing would seem to work. I would let Visual Studio site for hours, and it would never complete the opening process.

Finally I went in and deleted the contents of the .VS folder, after deleting this contents the solution can successfully be opened.

So if you run into problems with “Opening the files”, try deleting the contents of the .vs folder in your solution directory, hopefully that will help you.

If anyone from the Visual Studio team wants to reach out to me on this, I have perfview files and files collected from collect.exe as I was trying to troubleshoot the issue.

How to Install New Visual Studio 2017 Workloads after Installation

Sun, 19 Feb 2017 16:49:51 GMT

With the improvements in Visual Studio 2017, the installation process can be much more compact and streamlined, allowing you to choose which “workloads” you want to install. But what happens when you need a workload that you don’t have installed? Well with a little digging I was able to determine the process to do so, check out the steps listed below.

  1. Shut down any running Visual Studio 2017 instances
  2. Click on your Start Menu and Type “Visual Studio Installer”
  3. Once you have the installer open, if you see an “Update” option, go ahead and update Visual Studio 2017 before proceeding

  4. After you have VS up to date, you should see a Modify option available
  5. Once you click Modify you’ll be presented with the Workloads selection option in which you can choose your necessary workloads.

Any time you need to add ore remove workloads, you can always get back to this screen.

With the Release Candidate for Visual Studio 2017 Community I did run into one problem where the “install” file ended up being lost. If that’s the case just download the vs_community.exe again from Microsoft and run that, it’ll restore what you need and get you back to the appropriate process.

Visual Studio 2017 Released Date: March 7th, 2017

Fri, 10 Feb 2017 04:55:00 GMT

Mary Jo Foley is reporting that Visual Studio 2017 will release on March 7th, 2017.

I guess I better get to updating my DNN Extension Templates for Visual Studio before that release hits!

Head on over to for details on some virtual launch events.

What are you looking forward to most with Visual Studio 2017? 

I'm hoping for faster installation times than it takes to install your operating system!

DNN 9.0.1 Released

Sun, 29 Jan 2017 17:43:51 GMT

Depending on what the "source" is, it appears that DNN 9.0.1 was released either 11 days ago, or 3 days ago.

So which is it, 11 or 3? Who cares, let's just go over some of the basics of what the release covers.

First off, there are a number of security updates in this release, primarily around API security.

Security Updates:

  • 2017-01 (Medium) Antiforgery checks on Web APIs can be ignored in certain situations
  • 2017-02 (Low) Authorization can be bypassed for few Web APIs
  • 2017-03 (Low) Socially engineered link can trick users into some unwanted actions
  • 2017-04 (Low) Unauthorized file-copies can cause disk space issues

If addition to the security updates, there were also updates to some of the new UI functionality in DNN9, unfortunately it doesn't look like they've really addressed many of my issues from the initial DNN9 release, but at least they are doing something.

Release Notes:

  • The Platform Persona Bar menu items are now curated icons, enhancing the design aesthetic and localization capabilities of the new admin persona bar experience
  • Removed legacy scheduled tasks
  • Added soft-delete for Users. Users can now be soft-deleted and sent to the recycle bin for full delete
  • Added a global site selector and language selector for the host user
  • Performance increase and more efficient database usage in Users and Roles
  • UI enhancements and cleanup
  • Significant Platform bug fixes

For those of you going, "What, I didn't know DNN was still a thing?" Yeah, welcome to 2003, DNN is still alive and kicking, not going away anytime soon, you might want to check it out again.

New scam: Domain Abuse Notice: from

Tue, 22 Nov 2016 16:30:00 GMT

This morning we received an email from leo-wood - with the following information in it

Dear Domain Owner,

Our system has detected that your domain: DOMAINREMOVED is being used for spamming and spreading malware recently.
You can download the detailed abuse report of your domain along with date/time of incidents. LINK REMOVED

We have also provided detailed instruction on how to delist your domain from our blacklisting.

Please download the report immediately and take proper action within 24 hours otherwise your domain will be suspended permanently.

There is also possibility of legal action depend on severity and persistence of your abuse case.

Three Simple Steps:
1. Download your abuse report.
2. Check your domain abuse incidents along with date and time.
3. Take few simple steps for prevention and to avoid domain suspension.


Please look into it and contact us.

Best Regards,
Domain Abuse Admin
DomainCop Inc.
Tel.: (139) 729-59-00

From my research, this appears to be 100% fake, if you receive similar emails from please do not click on any of the links!

New Visual Studio 2015 Templates for DNN, Now With Wizard for Customizing

Thu, 25 Feb 2016 05:07:45 GMT


I’ve been maintaining my DotNetNuke Visual Studio project templates for a number of years now, one of the things they have sorely been lacking is the ability to “customize” the templates without having to crack open the full source code of the VSIX project, making changes, and then recompiling everything. There are 5 specific strings/values that were ripe for customization, but simply were not easily accessible.

  • Root NameSpace – The Namespace for the project, all of the files were populated with this namespace.
  • Owner Name – A DNN Manifest property that is used to provide information on who either developed the module, or commissioned the module development. This also gets used in all of the Copyright statements built into the templates.
  • Owner Email – Another DNN Manifest property, used to provide an Email address for contacting the owner/developer of a module.
  • Owner Website – The URL of the package’s owner, for further contact and information.
  • Local DEV URL – The URL of your local development environment.

Of all of those items, the one that has likely caused the most headache over the years is the Local DEV URL property, that was set at DNNDEV.ME, which if you followed along with my various tutorials, was the URL I always use for local development, that domain name points to This actually works out great, but some people choose not to follow my tutorials or already have existing development environments configured, yet still want to use my templates. You could still use them, but you had to make some modifications to the PROJ files after creation in order to get things working.

With the latest release of the templates, when you create a project using one of the 6 included templates, you will then be prompted with a Wizard interface (single step) that will allow you to customize these fields.


As always, you can download the latest “release” of the templates from the DNN Store, or from the Visual Studio Online Gallery if you want to get creative, you can check out the Repo on GitHub

Why should you list your open source extensions on the DNN Store?

Thu, 28 Aug 2014 14:53:00 GMT

One of the best things I love about the DNN platform is the ease of building, releasing, and updating Extensions for your website. If you need custom functionality you can either build something yourself, or likely find something that someone else has developed previously that might fit your needs.

If you are an extension developer for DNN (previously DotNetNuke), you have many options for how you can get those modules into the hands of potential customers. If you want to get your modules into the hands of as many different users as possible, you can’t just stick to one distribution mechanism, you need to reach out and try to get your extension available in as many places as possible.

Some of the ways for distributing your modules include: 1) Hosting on your own website, 2) Hosting on GitHub, 3) Hosting on Codeplex. The often overlooked one however, especially for free and open source modules, is 4) The DNN Store.

The Store is a great marketplace for DNN extensions, and while it primarily is used to “sell” extensions, there was even a time free extensions were discouraged or even removed, that is not the case anymore. You can list your extensions, modules, skins, or even providers, to get your products out in front of more customers. Some of the benefits of doing so

  1. More exposure – Besides searching on Google, the Store is the single most accessed place when people are looking for an extension for DNN.
  2. Customer downloads - By uploading your extensions to the Store, people can “purchase” them, with $0 pricing. This allows for those customers to easily find those downloads again in the future, as products that they have purchased and download them again.
  3. Customer updates – You can put out a new release of your extensions, and using the Patch tools provided within the Store you can easily get that patch out to customers as well.
  4. Customer email option - After someone purchases one of your modules, you can have the Store automatically send them an email with information related to the module, resources on how to use the module, what your support policy is, etc.
  5. Customer list – One of the biggest benefits of people purchasing your extensions, you can build up a customer list. What you do with that list might vary.
  6. Referrals – Finally, and one of the biggest items, is the ability to earn some cash from your free extensions? How you might ask? Referrals, if you link to the Store with referral codes included in the links, if a customer actually pays for a module, in addition to downloading your free extensions, you can earn a percentage of that sale. You won’t likely get rich from this, but if you do things right you can get yourself a bottle of Jack Daniels here or there!

One thing I would highly suggest, if you are selling modules, DO not use the Store as a way to get people to “try” your modules, and then point them to your own website to do the selling. That is just not cool.

Please be sure to check out some of my free extensions in the Store: HammerFlex and DNNCHAT being the two most popular extensions I have there. And yes, to be upfront, those links have referral codes embedded in them!

DotNetNuke 7.3.0 Upgrade Issues

Sat, 14 Jun 2014 16:29:23 GMT

Originally posted to With the release of DNN 7.3.0 this week, it was time for me to get my sites upgraded. I upgraded most of the sites without any issues, but wanted to point out a few errors that I received on sites, and how I resolved them. The very first upgrade I did started out bad, it was for this site, and while the upgrade was 100% successful, as soon as I tried to load the site I got a generic 500 error. Accessing the site from the webserver gave me a little more information, seen below, but not much. 500 Internal Server Error The requested Url does not return any valid content. AdministratorsChange this message by configuring a specific 404 Error Page or Url for this website. The first thing I did was run to to see if Bruce had a new version of his URLMaster module available. Sure enough, he had one that was released today, so I needed to get that installed. But how do you install a DNN Module when you can’t actually access the DNN website (due to that 500 error above)? You take the ZIP file for the module/extension you want to install, and put it in the /install/module folder in the root of your website. Once you’ve placed the file in that directory, browse to (replace DNNDEV.ME with your domain name).  That should install the upgraded Ifinity package and resolve the 500 error. Another problem I ran into was that one of my sites, upgrading from 7.1.1 to 7.3.0, received errors on the 7.2.0, 7.2.1, 7.2.2 and 7.3.0 SQL upgrade scripts, the errors were all something like System.Data.SqlClient.SqlException (0x80131904): ALTER TABLE failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations. That one was actually a pretty easy fix, basically in the SQL database options (using SQL Server Management Studio) there is a Database Compatibility option. The site that had the problem was set to SQL 2000! Not sure how that happened, but it was an easy fix. I set compatibility to 2005 (as that is what all my other DBs were at) and ran the upgrades again (after restoring my backups) and everything ran fine the second time around. The last thing you’ll find is that if you have any CSS in your Portal.css file, in 7.3.0, the Portal.CSS file is TURNED OFF BY DEFAULT. Whomever the genius was that made that call at DNN Corp should really be fired. You can turn portal.css back on in the site settings, under the Stylesheet Editor TAB. Besides those few issues, all addressable with a little effort this evening, I’m pretty happy with the 7.3 upgrade. The HammerFlex skin works great without any tweaks for 7.3 in my testing so far, you can download that from the DNNStore for free.[...]

DotNetNuke HammerFlex Free Skin resources

Mon, 03 Mar 2014 16:48:00 GMT

This blog post is a simple collection of free resources for the HammerFlex skin for DotNetNuke. HammerFlex is a responsive, open source skin that utilizes Bootstrap V3 to provide a flexible mobile friendly layout/design for your DotNetNuke (DNN) websites.

Project Website (source):


Tutorials/Blog Posts

New Release: dnnCHAT v01.00.00 now available using #SignalR

Fri, 20 Sep 2013 15:18:00 GMT

Earlier this year I started on a project to learn how to use SignalR, I had reasons to do so for my full time job (non-DNN related) but considering my DNN experience over the past 11 years I figured that learning how to use SignalR with DNN would be my fastest way to get myself up to speed. So I started working on a Chat module. Originally that module was called SignalRChat, and was available on codeplex, but ultimately I decided that name kind of sucked, so it needed to be something else.

In comes the DNN Chat module project, there was a Chat module for DNN long ago, but the last official release of it was in 2008, and while there was a Beta in 2010, it hadn't seen any development and work in years. So I approached DNNCorp about taking over the DNN Chat project and replacing it with my newly developed module, at the same time, going from "DNN Chat" to "dnnCHAT".

So here we are today, and the first official release of dnnCHAT is now available, v01.00.00, you can download it now from Codeplex.

You can see the module in action on

Here are some of the details about the module, but first things first, a note.

Note: If you previously used the DNN Chat module, and still have it installed, this module will not replace that, the namespaces are different, the Module Name in the Manifest is different. This module WILL NOT UPGRADE the older module. I would suggest uninstalling that module if you still have it, and then installing this module.

Module Details

Minimum DNN Version: 7.1.0
Source Control Location: 
Source Language: C#
Issue Tracking:
Live Demo:

Module Description and Features

This module is based on SignalR, utilizing C#, and requires DNN 7.1.0+, it provide basic Chat Room functionality, allowing both Anonymous and logged in users to communicate in the Lobby, logged in users can also join Rooms.

This is an entirely new module, old instances of the DNN CHAT module should be removed before attempting to use this module (they most likely weren't working anyways).

  • Chat logging in DotNetNuke Database using DAL2 (logs connections and all messages)
  • Ability for users to change their name in the chat window with /nick
  • Ability to create rooms with /join, or join existing rooms
  • Shows the number of connected chat users when in the room
  • Defaults anonymous users are named Anonymous# based on their number in the user queue
  • Uses Display Name if the a user is logged in to the DNN site
  • Strips all HTML from posts
  • Shows when a user connects or disconnects
  • Highlights messages that mention your "nick" in a different CSS class
  • Shows previous message history when you connect

The powerful .NETMF on your wrist! Meet the Agent

Tue, 21 May 2013 12:16:00 GMT

 So if you've been under a rock lately, you might have missed this little phenom known as KickStarter. Well today you're going to want to check it out. Secret Labs, the folks who brought you Netduino (hey, I'm wearing a Netduino t-shirt today, what a coincidence) have teamed up with a watch maker in New York City (SL is based there as well) to bring you Agent!

So what is Agent? I could write this whole long blog post about it, but you'd be better off just reading the KickStarter page.

Basically though, it is a .NET MicroFramework powered device, with long battery life, and awesome features, that will allow you to easily develop for the watch, using the Microsoft tools you already love (Visual Studio 2012).

The project is in a funding phase right now, but I believe the SDK will release by the time the KickStarter campaign ends.

So get to it, fund this project!

Using SignalR with DotNetNuke Modules

Mon, 25 Mar 2013 14:02:00 GMT

Originally posted on, all comments and discussion on this topic should be done there. This post will provide you with a basic tutorial for utilizing SignalR with custom DotNetNuke Modules. If you want to bypass the blog post go check out the source on GitHub, you can Fork my Repository. The module created here will be very simple, if you want a full blown module with more features be sure to check out the open source DotNetNuke Module SignalRChat, and see it in action at SignalR is an ASP.NET library for using websockets and long polling in your applications. Basically what this means, is that you can have your web pages (or apps) maintain an open connection with a webserver, passing data back and forth, without having to do standard posts and gets for the content and functions. SignalR is a free library that you can get from and you can DL from right into your Visual Studio projects. With my new daytime job I had the need to dive deeply into the pool that is SignalR, so I figured what better way to do that than try to create a DotNetNuke module that would use SignalR. There are plenty of Chat examples for SignalR, so I figured that would be a good place to start. This post assumes you already have a DotNetNuke development environment setup locally at, and that you have my Visual Studio templates installed. If you don’t, head on over to the DNN Wiki To start, you should create a new DotNetNuke module using my templates,, I used the C# DAL template, but you can use any of the C# templates. The DAL template has less information that will need to be removed than if you use the DAL2 template, the DAL2 template actually has a working sample in it). I called the module I used for this blog DNNSignalR, but you can name yours whatever you want. Install SignalR Install SignalR into the project using NUGET. To do this open your Package Manager Console (found under Tools/Library Package Manager) in Visual Studio 2012. In the Console run the following line Install-Package Microsoft.AspNet.SignalR This will download the SignalR resources into a Packages folder inside of your module’s folder. SignalR provides a variety of resources that will be utilized, as well as an older version of jQuery which will not be used. Add a Reference In your project add a reference to DotNetNuke.Web.DLL in the website’s BIN folder, this will allow you to use the Route Mapping in DNN 7. Map the Route In order for SignalR to work in DNN7, you need to tell DNN how to handle requests to the path /signalr/hubs/ that path won’t physically exist, due to the way the service framework in DNN7 works this is actually very easy to do. Add a class to your project called RouteMapper.cs using the code in the screenshot here. (In the sample code check out the /components folder) Note: If you are using URLMaster, you will need to add |/signalr to the end of the doNotRewriteRegex setting on the Regex Settings tab of the URLMaster Friendly URL Settings module (under the HOST menu). Create the ChatHub The ChatHub.cs class will be the listener on the SignalR side, “clients” (the view of the module) will send to that chathub using the Send method. The Hub will then broadcast that information back out to all connected clients using the addMessage javascript function, implemented in view.ascx later in this post. In this example ChatHub is really simple, but you’ll find that this class will likely be fairly complex [...]

Customizing the latest Module Dev Project Templates

Mon, 28 Jan 2013 21:12:00 GMT

With the 2.0 release of my module development project templates last week I’ve had a few inquiries into how to customize the templates. You can download the templates from

Why Modify the Templates?

First, why might you want to modify the custom templates? The main reason is that these templates are defined using a specific namespace, DotNetNuke.Modules.*, which is fine in most cases, but what if you want to use your own namespace? Well you have to create a project, then search/replace all instances of that namespace, while not removing any DNN references at the same time. Customizing the project templates will allow you to define your own company namespace, email address, website, and even copyright information, in the template so that you do not have to search/replace every time you create a new project.

Read the full post on

Comments are disabled due to the spam problem on

Using the new Module Development Templates for DotNetNuke 7

Fri, 25 Jan 2013 18:12:00 GMT

(image) With the release of DotNetNuke 7.0 (and now the more recent 7.0.2), it was time to update my module development project templates. If you have worked with my module development templates before, here are the major changes for this release. If you haven’t worked with them before please read this whole blog post as I discuss how to get up and running with the templates.

What’s New

This section will cover some of the “new” features of this template release. If you’re familiar with my previous releases this will hopefully get you up to speed on what is new. If you are new to the whole process it will help you understand a few of the features in the templates.

For more information about the templates read my full blog post on my website.

Comments are turned off here due to the fact that has a horrible spam problem