Lee Sykes of DNN Creative informed me this morning that there is an issue with modules that dynamically change the title.
Line 50 in CDefault.vb is commented out:
'Public Title As String = ""
This will cause many modules that use this property of CDefault to dynamically set the page title to break.
Source
I know this will cause some errors. I have several modules that alter the page title based on content for search engine optimization. This will definitley delay any upgrade we do from DNN 3 to DNN 4 in our production environment if it takes longer than 1 month for the next patch/release. I will post any updates here.
I successfully updated our development environment with DNN 4.0.1.
See below:
Current Assembly Version: 04.00.01
Current Database Version: 04.00.00
Upgrade Status Report
00:00:00.031 - Upgrading to Version: 4.0.1 00:00:00.750 - Performing General Upgrades 00:00:01.140 - Installing Module File D:\DNN4.0\Install\Module\Announcements.zip: 00:00:01.531 - Installing Module File D:\DNN4.0\Install\Module\Announcements_3.1_Install.zip: 00:00:01.968 - Installing Module File D:\DNN4.0\Install\Module\Contacts_3.1_Install.zip: 00:00:02.203 - Installing Module File D:\DNN4.0\Install\Module\Discussions_3.1_Install.zip: 00:00:02.500 - Installing Module File D:\DNN4.0\Install\Module\Documents_3.1_Install.zip: 00:00:02.750 - Installing Module File D:\DNN4.0\Install\Module\Events_3.1_Install.zip: 00:00:03.140 - Installing Module File D:\DNN4.0\Install\Module\FAQs_3.1_Install.zip: 00:00:03.375 - Installing Module File D:\DNN4.0\Install\Module\Feedback_3.1_Install.zip: 00:00:03.546 - Installing Module File D:\DNN4.0\Install\Module\HTML_3.1_Install.zip: 00:00:03.765 - Installing Module File D:\DNN4.0\Install\Module\IFrame_3.1_Install.zip: 00:00:03.968 - Installing Module File D:\DNN4.0\Install\Module\Image_3.1_Install.zip: 00:00:04.125 - Installing Module File D:\DNN4.0\Install\Module\Links_3.1_Install.zip: 00:00:04.453 - Installing Module File D:\DNN4.0\Install\Module\NewsFeeds_3.1_Install.zip: 00:00:04.625 - Installing Module File D:\DNN4.0\Install\Module\Survey_3.1_Install.zip: 00:00:06.875 - Installing Module File D:\DNN4.0\Install\Module\UserDefinedTable_3.1_Install.zip: 00:00:08.406 - Installing Module File D:\DNN4.0\Install\Module\UsersOnline_3.1_Install.zip: 00:00:08.797 - Installing Module File D:\DNN4.0\Install\Module\XML_3.1_Install.zip:
Upgrade Complete
Our Development Environment
Web Server: Dell 1550 Dual 1 Ghz processors with 2 Gb RAM Windows 2003 Stadard Edition with Service Pack 1
Database Server: Dell 7150 Quad Itanium processors with 12 Gb RAM Windows 2003 Enterprise Edition with Service Pack 1 (64 bit) Microsoft SQL Server 2005 Enterprise Edition (64 bit)
DotNetNuke: DotNetNuke Version: 4.0.1 Data Provider: SqlDataProvider .NET Framework: 2.0.50727.42 ASP.NET Identity: NT AUTHORITY\NETWORK SERVICE
I have confirmed that the DNN Search module errors I had experieced in DNN 4.0.0 have been fixed. As commented on the DNN 4.0 and Search Module Errors post by
DotNetNuke released version 3.2.1 and 4.0.1 yesterday as stabilization releases.
From what I understand, this release includes:
- Meduim Trust issues fixed within MS MemberRole
- FreeTextBox fixes
- More documentation
For more information and the downloads: Click Here
I did not seeing anything concerning a fix for DNN Search Module. I will make a post here if this has been fixed...UPDATE: See Comments Here
I will be upgrading my DNN 4.0.0 installation this weekend and will post the results. For those who are interested in upgrading their DNN 3.x site, DO NOT extract the 4.x version on top of the 3.x version!
I decided that I would try to make our upgrade from DNN 3.1 to DNN 4 as painful as possible by throwing Active Directory into the mix. I am exploring all methods, including the possiblity of using a custom method for AD authentication and DNN synchronization. So, this will be my placeholder for any valuable information/code tidbits...
Methods for Active Directory - Here they provide several methods for managing your Active Directory database via ASP.Net code. They cover querying user information using System.DirectoryServices, changing user accounts, and group management.
Active Directory Module - On DNN website - Notice: The Active Directory Module currently produced by Tam is slated to be included in an upcoming release of DotNetNuke. It is not "officially supported" at this time, although we are clearly preparing to do so. Please bear with us while we incorporate this useful functionality in an appropriate manner.
Retrieving User Info from DotNetNuke - Discussion on Tam's module and Active Directory
Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication - Microsoft on AD and ASP.Net

Active Directory and ASP.NET 2.0 Beta 2 - Did you know MS shipped an Active Directory Membership Provider in Beta 2?
more coming soon...
Out of the box, DNN 4.0 Search is broken. A search test showed the following:

In the Log Viewer I see the following errors:
ModuleId: -1 ModuleDefId: -1 FriendlyName: ModuleControlSource: AssemblyVersion: 04.00.00 Method: System.Web.UI.Util.CheckVirtualFileExists FileName: FileLineNumber: 0 FileColumnNumber: 0 PortalID: 0 PortalName: My Website UserID: 1 UserName: host ActiveTabID: 37 ActiveTabName: Search Results AbsoluteURL: /Default.aspx AbsoluteURLReferrer: ExceptionGUID: d7404334-fde9-4910-adea-52b19d7d8278 DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider InnerException: The file '/DesktopModules/SearchResults/SearchResults.ascx' does not exist. Message: DotNetNuke.Services.Exceptions.ModuleLoadException: The file '/DesktopModules/SearchResults/SearchResults.ascx' does not exist. ---> System.Web.HttpException: The file '/DesktopModules/SearchResults/SearchResults.ascx' does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath) at System.Web.UI.TemplateControl.LoadControl(String virtualPath) at DotNetNuke.UI.Skins.Skin.InjectModule(Control objPane, ModuleInfo objModule, PortalSettings PortalSettings) --- End of inner exception stack trace --- StackTrace: Source: Server Name: BARNEY
I have confirmed that '/DesktopModules/SearchResults/SearchResults.ascx does not exist and have yet to find where it's real location is.
ModuleId: -1 ModuleDefId: -1 FriendlyName: ModuleControlSource: AssemblyVersion: 04.00.00 Method: System.Web.UI.UserControl.get_Request FileName: FileLineNumber: 0 FileColumnNumber: 0 PortalID: 0 PortalName: My Website UserID: 1 UserName: host ActiveTabID: 37 ActiveTabName: Search Results AbsoluteURL: /Default.aspx AbsoluteURLReferrer: ExceptionGUID: 761ae1d9-b426-4dee-af03-f371eb81af25 DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider InnerException: Object reference not set to an instance of an object. Message: DotNetNuke.Services.Exceptions.ModuleLoadException: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object. at System.Web.UI.UserControl.get_Request() at DotNetNuke.Entities.Modules.PortalModuleBase.get_IsEditable() at DotNetNuke.UI.Containers.Title.CanEditModule() in D:\Venexus\DNN4.0\Admin\Containers\Title.ascx.vb:line 52 at DotNetNuke.UI.Containers.Title.Page_Load(Object sender, EventArgs e) in D:\Venexus\DNN4.0\Admin\Containers\Title.ascx.vb:line 82 --- End of inner exception stack trace --- StackTrace: Source: Server Name: BARNEY
ModuleId: -1 ModuleDefId: -1 FriendlyName: ModuleControlSource: AssemblyVersion: 04.00.00 Method: DotNetNuke.UI.Utilities.DNNClientAPI.EnableMinMax FileName: FileLineNumber: 0 FileColumnNumber: 0 PortalID: 0 PortalName: My Website UserID: 1 UserName: host ActiveTabID: 37 ActiveTabName: Search Results AbsoluteURL: /Default.aspx AbsoluteURLReferrer: ExceptionGUID: c9460ab3-3704-4c8b-a55d-d0d63a4a1bea DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider InnerException: MinMax persistance type of cookie requires a ModuleId Message: DotNetNuke.Services.Exceptions.ModuleLoadException: MinMax persistance type of cookie requires a ModuleId ---> System.Exception: MinMax persistance type of cookie requires a ModuleId at DotNetNuke.UI.Utilities.DNNClientAPI.EnableMinMax(Control objButton, Control objContent, Int32 intModuleId, Boolean blnDefaultMin, String strMinIconLoc, String strMaxIconLoc, MinMaxPersistanceType ePersistanceType, Int32 intAnimationFrames) at DotNetNuke.UI.Containers.Visibility.Page_Load(Object sender, EventArgs e) in D:\Venexus\DNN4.0\Admin\Containers\Visibility.ascx.vb:line 216 --- End of inner exception stack trace --- StackTrace: Source: Server Name: BARNEY
After further research I found a fix on ecktwo's website: DNN Search for 4.0.0
UPDATE: This issue was fixed in DNN 4.0.1 release
We have a large DNN installation and we are moving everything from DNN 3.1 to DNN 4.0 and needed to do some testing. So, first we need to get the DNN database from the local SQL Server 2000 to a remote SQL Server 2005.
Here is what I did...
- Went into DNS and created a new subdomain called dev.somedomainname.com and pointed it to the development server IP address.
- Copied the entire DNN directory on the production server to the development server.
- Reset permissions on the dev server for the DNN folder I copied from production to allow Network Service full permission.
- Created a new website on Dev in IIS and setup a host header for the new subdomain and for localhost, pointing it to the DNN folder I copied from Prod.
- Detached the production DNN database form the SQL Server 2000 instance.
- Copied the MDF and LDF files for the DNN database from \mssql\MSSQL\Data on Prod and moved them to \Microsoft SQL Server\MSSQL.1\MSSQL\Data on Dev (actually I just made a copy of the files in the same folder so I could quickly get Prod running again and would not have to wait on the slower network connection to move 3 Gb of data over, then moved them over to Dev and renamed them by removing "Copy of " from the filename).
- Attached the database I copied from Prod using SQL Server Management Studio. Part of this process automatically upgrades database to from 2000 to 2005. WARNING! You cannot move a SQL Server 2005 database back to SQL Server 2000 using the same method. Nor can you use replication from SQL Server 2005 to a 2000 instance...or not atleast when I tried it in CTP release a couple of months ago.
- Opened web.config and changed the server name, username, and password for the remote SQL Server.
- Opened up a browser on the Dev server and went to http://dev.somedomainname.com and confirmed site was assessible.
I will repeat these tasks again when I have done thorough testing on Dev with the exception of copying the DNN root over. I will post any issues I encounter...
The first thing I noticed when I selected the dropdown for modules was that many were missing.
Where are the other core modules??? They appear in the correct folder:

I am not sure why this happened, but to fix it, I simply unzipped DotNetNuke_4.0.0_Install.zip to a new folder and using Host > Module Definitions > Upload New Module, uploaded each module found in \Install\Module

After uploading the modules and installing them, all seems well and I successfully added a new Text/HTML module into the Home page and edited it without incident.

UPDATE: Read Cathal's Comments
I had installed DotNetNuke 4.0 on a Windows 2003 Standard box using a remote SQL Server 2005 Enterprise database on a development box earlier tonight. I had navigated around doing a few things and paused in the middle of updating the host account. I might have reached the session expiration time before I returned, but I decided to update the host password and clicked update. This is the error that was returned:
Unhandled Error
Error Details
| File |
|
| Error |
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) |
I believe this means I need to allow named pipes because by default SQL Server 2005 does not allow this type connection. I was not aware that DNN used Named Pipes and I did not see anything concerning this in the Installation help. So, this is how you change it....
- Start > All Programs > Microsoft SQL Server 2005 > Configuration Tools > SQL Server Surface Are Configuration
- Once opened, use Surface Area Configuration for Services and Connections
- Select Using both TCP/IP and named pipes
- A notification that the Database Engine must be restarted before it takes effect will be displayed. You can restart the engine from Admin Tools > Services and restart SQL Server (MSSQLSERVER)
I am assuming this is all that is required. I will post a comment here if I encounter this error again.
At the end of the DNN 4.0 install on Dev, I encountered the following error:
Installation Complete
Unhandled Error
Error Details
| File |
|
| Error |
Unable to generate a temporary class (result=1). error CS2001: Source file 'C:\WINDOWS\TEMP\vsl59tus.0.cs' could not be found error CS2008: No inputs specified |
System:
Windows 2003 with Service Pack 1
DNN 4.0
SQL Server 2000 on local machine.
The answer is to give Network Services full permissions for C:\WINDOWS\TEMP and C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
I might have missed this in the Installation instructions, but I sure did not see it in there that it was required to give permissions to the Temp folder. Anyway, it's working now. I will be testing against a remote SQL Server 2005 shortly...
Lee Sykes of DNN Creative approached me about doing an interview on search engine optimization and DotNetNuke. I jumped at the opportunity and am happy to announce the Issue 4 release of DNN Creative that includes the DNN and SEO interview. I will admit that I do not know everything about search engine optimization nor DotNetNuke, and have not been in the SEO game long. Nor do I have the stomach to live on the whim of Google or any other search engine algorithm change, but there are a LOT of basic things you can do to make your DNN site rank better in the search engines. I have seen many DNN sites that might look good to the user as far as look and feel are concerned, but the code looks long and poorly optimized in the source. This is disappointing because without the search engines really picking up on the DotNetNuke movement, as well as the search engine users finding sites built with DNN, the opponents of the darkside (damn hippy PHP coders) will continue their run at being the choice for data rich SE friendly sites. What I do know about SEO is from running many DNN sites and trying things to see how the search engines treat them. Also, having wrote several crawlers/spiders, I do know how the bots that retrieve and index webpages work. So, check out the interview in Issue 4 of DNN Creative and search engine optimize your DNN website.
As posted on Xfernal.com, here is the code for DotNetNuke Skin HTML Table Trick. This will help for search engine optimization by making the "Left Menu" aka LeftPane appear to the user as expected, but appear in the HTML code below the ContentPane. This will help getting the main content of the webpage above the navigation, making the content more important than the menu when indexed.
Here is the code: <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <!-- skip to second column --> <TD vAlign=top align=middle width=180></TD> <TD class=ContentPane id=ContentPane vAlign=top width="100%" rowSpan=2 visible="false" runat="server"></TD> </TR> <TR> <TD class=LeftPane id=LeftPane vAlign=top align=middle width=180 visible="false" runat="server"></TD> </TR> </TBODY> </TABLE>
A DotNetNuke site I have been working on that has some decent traffic, was experiencing an occasional Out of Memory Error. During peak traffic times, IIS would crap out and throw the error. IISReset was neccessary sometimes to alleviate the issue...very frustrating.
Here is the error:
InnerException: Exception of type System.OutOfMemoryException was thrown. Message: DotNetNuke.Services.Exceptions.PageLoadException: Exception of type System.OutOfMemoryException was thrown. ---> System.OutOfMemoryException: Exception of type System.OutOfMemoryException was thrown. --- End of inner exception stack trace ---
Environment:
- DotNetNuke 3.1
- Windows 2003 Server
- All of the latest patches/service packs
- MS SQL Server 2000
- 1.6 Gb Database size
- Dual 3 Ghz Xeons with 2 Gb RAM Dell 2850
After digging into logs and looking around Host > Schedule, I noticed that the errors coincided with the DNN Search Indexer schedule, so I stopped it. This helped for a bit, but as the site continued to grow (over 500,000 pages), the error began reappearing.
I had tried a few other things to get rid of the issue without success. For example, under Host > Schedule I enabled DotNetNuke.Services.Cache.PurgeCache, DOTNETNUKE and was purging every 30 minutes. I thought surely this would be the answer, kicking myself for not enabling it earlier. However, to my disappointment, the error persisted. ARRRRRRRR!
I feel strongly that SQL Server should be on it's own server, but due to a server shuffle in our rack and decommisioning an older server to make room for 3 other servers, we have been using a single server for both IIS and SQL Server for this site. We are working through a few Remote Procedure Call errors with DNN 3.x and 4.0 and SQL Server 2005 (will discuss in later post) and were forced to use this setup. This error would surely go away when we move our production database to our Quad Itanium Processor server with 12 Gb RAM, but unfortunately this was not an option. So, I started digging through MSDN and found the Server Memory Options.
"Use max server memory to prevent SQL Server from using more than the specified amount of memory, thus leaving remaining memory available to start other applications quickly. SQL Server does not immediately allocate the memory specified in max server memory on startup. Memory usage is increased as needed by SQL Server until reaching the value specified in max server memory. SQL Server cannot exceed this memory usage unless the value of max server memory is raised." - MSDN
So, I decided to give it a try...This is what I did:
- Opened Enterprise Manager
- Expanded the server group
- Right-clicked the server
- Clicked Properties
- Clicked the Memory tab
- Under Dynamically configure SQL Server memory, lower the Maximum
This seems to have worked. MS SQL Server is such a pig. By putting it on a diet and setting max server memory, the error has disappeared. I decided to do some testing and was beating up the server pretty bad with several crawlers/spiders I have built and was hitting the site hard. The only error I experienced during my testing was an occasional deadlock victim error, which is expected with the number of transactions taking place on this database. I will live with a temporary error over an IIS crash anyday. Moving everything back to seperate servers for IIS and SQL Server should help greatly for a DNN site of this size. Let's just hope the DNN team can knock out a few crtitical issues with RPC and SQL Direct provider.
Out of the box, DNN does a couple of very bad things as far as search engine optimization is concerned. While I was learning how DNN worked, I had Google index one of our sites and it indexed every page on the site AND the unique URL page for Login, Register, Privacy Policy and Terms of Use, making my site index 5 times larger than it really was. Very bad! This redundant content could hurt search engine rankings...
The first concern is the links to Login and Register. By default, with search engine friendly URLs turned on, a unigue URL is created on EVERY page for the Login and Register. This can be quickly fixed...
The fix:
- Create a new page called Login
- Add the Account Login module to the page
- Create another page called Profile (you can call it whatever you want)
- Add the User Account module to the page
- Go to Admin > Site Settings
- Expand Advanced Settings
- Under Page Management select the page you first created for the Login Page
- For the User Page, select the Profile page you created
- Click the Update link at the bottom of the Site Settings page
Now, DNN will use the "hardcoded" links for all Login/Register links on the site.
The second badness DNN does is with it's default DotNetNuke skins. Within the skin is the DNN Tag/Token for Privacy Policy and Terms of Use. Once again, this is a unique URL for EVERY single page on the website for both pages. This one is a little more difficult and requires that you edit the skin. So, open up your favorite editor and modify the skin by removing the tags/tokens for "PRIVACY" and "TERMS" to use a real hardcoded links. While most skin developers include these tags/tokens in their skins, until the DNN core team fixes this issue, I would recommend removing them.
Update 1/5/2005:
I submitted an issue to the DNN Bug Tracker on 1/1/2005: DNNP-2289
No response yet...
I decided to create a blog just for keeping up with everything going on in the DotNetNuke world. Anything I find helpful or newsworthy concerning DNN will be posted here. Many of thepost will undoubtedly be technical and mainly for developers, but users of DNN will find information they can use to make their DNN site better. So, for my first post, I will list a few of the main websites for DotNetNuke and keep this short...
DotNetNuke Links:
More coming soon!
|
Copyright © 2010 Venexus, Inc.. All rights reserved.
|
|