This is to report a success story and hopefully help those who may come across the same issues.
Note: the following provides DotNetNuke 4.0.9 build and installation instructions where only the base modules, RRS feed, Help, FAQ, and Forum modules have been tested.
I recently had GoDaddy install DotNetNuke on my Shared Windows Hosting Account. The account includes IIS 7 and .Net 3.5. It took only a few minutes and worked great with all delivered components. My troubles started when I began to fulfill my objective to write a custom Module and deploy it to the site.
I downloaded the DotNetNuke Web Application framework and Built a local test website using Visual Studio 2008. I created my module and install (.dnn) package for upload to my GoDaddy installation.
When I uploaded my Module package, it seemed to install without error; but once I refreshed, Error 500 - Internal Server Error. My install was dead. After comparing the web.config between my test environment and the GoDaddy install, I found unfortunately, the GoDaddy install, obviously, was built with .Net 2.0 and not 3.5. My modules use the "Linq To Sql Class" for the DAL which is supported on 3.5. So when asked during the initial build of the DoNetNuke framework, I chose to use .Net 3.5.
To restore the DotNetNuke install to regain access, I only needed to delete the two Module folders:
- One under App_Code
- The other under DesktopModules.
This still left the tables used by my nodule in the database.
I really want to use "Linq To Sql" and my GoDaddy server supports IIS 7 and .Net 3.5. So what to do! It was actually pretty simple:
- Backup the GoDaddy install of DotNetNuke (Installed in a virtual folder named "dnn")
- Backup the GoDaddy SQLServer Database
- Save off the web.config from the GoDaddy install (under the "dnn" folder)
- FTP from server to local machine
- Delete all the files and folder below the "dnn" folder on the server
- Do not delete the "dnn" folder as it is marked as virtual and has the required security attributes
- FTP my local installation of DotNetNuke to the "dnn" folder on the server
- The local installation folder needs to be named "dnn" : see this post http://www.dotnetnuke.com/Community/Forums/tabid/795/postid/19829/Default.aspx
- I did not originally name my project "dnn", so I copied my install to another folder and renamed the root folder to "dnn"
- Updated my local web.config and FTP'd the files to the "dnn" folder on the server
- Replaced the two SiteSqlServer entries from the GoDaddy version to the local version
- one under connectionStrings
- the other under appSettings
- I also replaced the machineKey entry under system.web
- I am not sure if this is required, but I am adding here for completeness, as I did make the change
Once this was complete, my site was still in business. Most of my content which is stored in the database was visible. But there were some side affects.
For example, I had installed the afore mentioned modules on the GoDaddy installation, but not on the Test Server. The pages that referenced these modules got errors. In my test installation I had not installed the modules and only the resource files were uploaded. Because the Modules were marked in the GoDaddy database as being installed, they showed up in Installed modules list.
I just used the "Uninstall" process in the admin page and then reinstalled the modules. I did lose the content in these modules. But since my GoDaddy site is actually a test environment for practicing limited access deployment, it was not a real issue.
In a production environment (theoretically), I could monkey with the SqlTables to get this information back since most of the tables include a ModuleId. These entries can be updated to the new ModuleId values of the re-added modules. Or, I could restore my backups on GoDaddy, install the modules in my local installation, and perform the above process again. I did neither, so I can not confirm the level of success using either process.
Anyway, I have gotten a lot of help from the DotNetNuke community and wanted to give a little back. I hope this helps you whether you are a GoDaddy or some other hosting service customer.