DotNetNuke and the WebsitePanel
Written by Richard English Thursday, 13 January 2011
I moved an existing DotNetNuke site to my ASP.Net web hosting account on Arvixe. I used the backup and restore module from Evotiva to facilitate the move and everything looked good. I logged in and made a few changes, upgraded the DNN install to the latest version and was testing that everything was working, when I realized that some of my Google Map data was not displaying. The site relies heavily on custom Google Maps. Data that was being pulled from xml files was displaying but data from KML and KMZ files was missing. I quickly realized that I had forgotten to add the Google Earth custom MIME types that are required to serve KML and KMZ files. No problem, I logged into my Arvixe WebsitePanel and added the MIME types. I went back to my map and the files were being served and the map was functioning as expected. That was the good news.
The bad news was, something had gone terrible wrong and the site started to experience a number of problems. DotNetNuke uses a dynamically generated page called LinkClick.aspx to serve PDF and other files. All of the LinkClick.aspx links were broken and displayed a Server Error – 404 page not found to the users. I also use AJAX Tabs to display data and they were not displaying. I could login to the site but could not edit or change anything, no postback was occurring. I noticed some other odd things and I couldn’t even log out of the site. I went back into the WebsitePanel and removed the MIME types. The site was still broken.
After hours of searching the DNN forums and trying to troubleshoot the problem, I finally realized that part of my Web.Config file was missing. I first realized that the WebsitePanel was writing to the Web.Config when I saw a default document section, something I had never seen in a DotNetNuke Web.Config file before. Upon closer examination I realized that all of the handlers had been removed from the system.webServer section of the Web.Config file. For some reason when the WebsitePanel writes to the Web.Config file, the handlers are not retained. I added the handlers section back and the site came back to life. Looking at this section, it becomes obvious why LinkClick and AJAX tabs weren’t working and I couldn’t log off. Once I got the site working again I manually added the Google Earth custom MIME types to the system.Webserver section of the web.Config file like this:
So, if you start to experience problems with your DotNetNuke website after changing something under the website section of the WebsitePanel, look for missing handlers.