DotNetNuke Tips

DNN Event ID 1310 after moving website to new server Exception message: Unsecured Passwords Format Detected

IIS throwing Event ID 1310 Exception message: Unsecured Passwords Format Detected

1310

The Error Message

Exception information: Exception type: ConfigurationErrorsException Exception message: Unsecured Passwords Format Detected. The Membership Provider that contains the unsecure passwords format is: AspNetSqlMembershipProvider. The obsoleted password format is: Encrypted. For more information, see https://go.microsoft.com/fwlink/?linkid=834784.

Request information: Request URL: Request path: User host address: User: Is authenticated: False Authentication Type: Thread account name: IIS APPPOOL\DefaultAppPool

The Problem was actually simple and a “user error”

We tried to connect the website up to the wrong database. i.e. When we copied the database and moved it, we inadvertently copied the wrong database. This caused the above error due to the fact that the machinekey data in the web.config file was wrong for the database.

This caused the error 1310 to be thrown and the Application Pool associated with the new incorrectly setup site to stop.

The fix. 

Connect to the correct database!

Update

Further to this we encountered a really weird set of errors after this. Initially the error appears to be a connection issue. But then we started getting failings that would come an go.

Error logs showing plenty of Event ID 1310 but also in the DNN logs:

DotNetNuke.Services.Log.EventLog.DBLoggingProvider – System.Data.SqlClient.SqlException (0x80131904): Could not allocate space for object ‘dbo.EventLog’.’PK_EventLogMaster’ in database ‘bla’ because the ‘PRIMARY’ filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

 

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

 

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

 

   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

 

   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()

 

   at System.Data.SqlClient.SqlDataReader.get_MetaData()

 

   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)

 

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)

 

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)

 

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)

 

   at System.Data.SqlClient.SqlCommand.ExecuteScalar()

 

   at PetaPoco.Database.ExecuteScalar[T](String sql, Object[] args)

 

   at DotNetNuke.Data.PetaPoco.PetaPocoHelper.ExecuteScalar[T](String connectionString, CommandType type, String sql, Object[] args)

 

   at DotNetNuke.Data.SqlDataProvider.ExecuteScalar[T](String procedureName, Object[] commandParameters)

 

   at DotNetNuke.Data.DataProvider.AddLog(String logGUID, String logTypeKey, Int32 logUserID, String logUserName, Int32 logPortalID, String logPortalName, DateTime logCreateDate, String logServerName, String logProperties, Int32 logConfigID, ExceptionInfo exception, Boolean notificationActive)

 

   at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.WriteLog(LogQueueItem logQueueItem)

 

ClientConnectionId:e495809e-60d5-44f2-b883-fe81fbe1126f

 

Error Number:1105,State:2,Class:17

The Problem

The issue turned out to be that the database was a legacy database we received from another host. They had defined a database limit size in the SQL database it’s self. This caused the database to strop responding to DNN in a way we had never seen. After some time, the maintenance would drop the size of the database just below the limit and the DNN site would fire up. Until it reached the SQL database limit again.

Not likely to be a problem for many people, but something to check in the SQL dates settings.

The fix update

Increase or remove the size of the SQL database limit.

Adding Application Pool Identity in IIS to a Folder

 

Skip to end of metadata

 

Go to start of metadata

 

Whenever a new application pool is created, IIS creates a security identifier (SID) that represents the name of the application pool itself. For example, if you create an application pool with the name “Smartcrypt,” a security identifier with the name “Smartcrypt” is created in Windows. Resources can be secured by using this identity. However, the identity is not a real user account and will not show up as a user in the Windows User Management Console.

This can be configured by selecting a folder in Windows Explorer and adding the “Smartcrypt” identity to the folder’s Access Control List (ACL).

  1. Open Windows Explorer
  2. Select the directory the Smartcrypt Manager is installed under (eg: c:\web\mds)
  3. Right click the directory and select Properties
  4. Select the Security tab
  5. Click the Edit button and then Add button
  6. Click the Locations button and make sure that you select your computer.
  7. Enter IIS AppPool\<myappoolname> (eg: IIS AppPool\smartcrypt) in the Enter the object names to select: text box.
  8. Click the Check Names button and click OK.
  9. Check Modify under the Allow column, and click OK, and OK.

By doing this, the file or directory you selected will now also allow the Smartcrypt identity access.

 

You can do this via the command-line by using the ICACLS tool. The following example gives modify access to the Smartcrypt identity to the folder C:\web\mds and all contents.

ICACLS "C:\web\mds" /grant "IIS AppPool\Smartcrypt":M /t
 

DNN (dotnetnuke) Active Forum Module Control Panel a critical error has occurred

Error when opening the DNN Active Forum Module Control Panel

When you attempt to open the forum module Control Panel, you receive a.net load error that says a critical error has occurred. Upon looking at the log files for the website within DNN, you’ll notice that the related error message looks something like this.

bsoluteURL:/Default.aspx
DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke
ExceptionGUID:1012073d-d31d-4a73-a051-31478c9de05d
AssemblyVersion:7.4.0
PortalId:0
UserId:3429
TabId:107
RawUrl:/Resources/Forum/ctl/EDIT/mid/506
Referrer:http://website.com.au/Resources/Forum
UserAgent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3
ExceptionHash:eUa1nHF8hNveOCQzqX0zOg==
Message:Object reference not set to an instance of an object.
StackTrace:
InnerMessage:Object reference not set to an instance of an object.
InnerStackTrace:
at DotNetNuke.Modules.ActiveForums.Controls.Callback.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Source:
FileName:
FileLineNumber:0
FileColumnNumber:0
Method:
Server Name: SERVERNAME

 

The Fix

It is good practice to ensure that you have the latest version of the DotNetNuke forum module on your website. Especially if you are using the later versions of DNN.  Currently the module project has been moved into an open source project on GitHub. The latest version can be found here: https://github.com/ActiveForums/ActiveForums

 

 fixing the error

 you need to ensure that the web.config file also includes the following reference.

        <section name=”cryptography” requirePermission=”false” type=”DotNetNuke.Framework.Providers.ProviderConfigurationHandler, DotNetNuke” />

 

 

    <cryptography defaultProvider=”CoreCryptographyProvider”>

      <providers>

        <clear />

        <add name=”CoreCryptographyProvider” type=”DotNetNuke.Services.Cryptography.CoreCryptographyProvider, DotNetNuke” providerPath=”~\Providers\CryptographyProviders\CoreCryptographyProvider\” />

      </providers>

    </cryptography>


 Take note of where this is found in the web can feed file below.

Screenshot 2015 06 27 17 13 53

 

 

DotNetNuke DNN Spam Registrations Problem Fixed

DotNetNuke DNN Sites getting spam registrations – How to stop them

In recent weeks, many of our DNN websites have systematically been targeted for Spam New User Registrations. There has been some discussion around the how and why, and as much as we can tell, the problem is this:
1. Some script kiddy has bothered to write a bot that finds DNN websites. It is not even a good bot, because it is not capable of validating registrations to automated active email addresses. (If you are the creator of the bot… “YOU ARE DOING IT WRONG” as it is not going to bring the Google results you are looking for.)
2. The bot will attempt access to:  www.yoursite.com /?ctl=Register
?ctl=Register
3. This brings into play the default DNN registration process module.
4. This page is currently available if your site has either Public or Verified registrations enabled.
5. Tricks on derating the bot by raising the password complexity appeared to work a short time only.
6. Enabling the inbuilt Captcha is as good as useless, as almost any OCR application can break it.
7. A better simple solution is needed.
 

ReCaptcha is the FIX that is working well

Here at InteractiveWebs, we decided that we would enable Recapcha (a cleaver Google Initiative https://www.google.com/recaptcha/ ) that is harder to be machine broken, and test the results. We found that all the spam registrations stopped once Recaptcha was used.
To do this we created two Free DNN Modules to add Recaptcha to the URL that this bot is using to register on sites. The two modules are to support DNN 6.2 +  and 7x +.
The modules replace the standard captcha control to a recaptcha
From this:
DNNCaptcha
To this:
DNN Spam Registration Stop
This is a good link explaining how Recaptcha came into existence, and why it works well: https://www.youtube.com/watch?v=cQl6jUjFjp4

The Free Solution and Installing iWebs Regsiter

The free modules are available of download here: http://www.interactivewebs.com/DotNetNukeModules/ModuleDownloads.aspx
To install them and fix your site you will need to follow the instructions below:

Step 1 – Register your site for Recaptcah

Go to: https://www.google.com/recaptcha/intro/index.html  and register your domain, or domains. This will give you the ability to use recaptcha on your DNN sites on any domain you like.
DN Google Recaptcha

Step 2 – Copy the Public Key and Private Key for your Domain

You are going to need they keys that this site provides:
DNN Recaptcha Keys
Similar to these.
 

Step 3 – For you DNN site, Turn on the DNN Captcha system.

ADMIN>>SITE SETTINGS>> USER ACCOUNT SETTINGS>>  “Use CAPTCHA for registration” Ticked.

DNN Enable Captcha

Step 4 – Download and Install iWebs – Register

Install our “iwebs- register” module, making sure you pick the one that is for your DNN version.

  • DNN 6.2 And laters: iWebsRegister 62.6.3.0 PA.zip (at time of writing this)
  • DNN 7 and later:  iWebsRegister 72.7.1.0 PA.zip (at time of writing this)

Once installed, you need to add the module to a page as you would any other. We recommend adding it to it’s own page in the DNN Admin menu, and keeping the page Admin Only.
DNN Recaptcha Module Downlaod DNN Recaptcha Module

Step 5 – Configure the iWebs Register Module.

The module you are looking for is called: iWeb’s – Register – You can select the Settings from the module drop down as you would any other DNN module.
DNN Module Settings
 
Enter the Public Key and Private Keu information that you received from your Google Recaptcha registration of your domain. THEN SELECT UPDATE to save the information.
DNN Captcha Settings

Step 6 – Install the Register Control

After saving your public and private keys by clicking “update” you are ready to:
Click on the “Install Register Control”
This will inject the recaptcha setting into your website. So when you hit any registration URL (www.yoursite.com /?ctl=Register) you now get the recaptcah box.

Update to V2 of Recaptcha

Google has released what they call V2 of Recaptcha. We have update the module to support this. The process of updating to V2 goes like this.
1. By default, previously created recaptcha keys are V1. Any updated installs of our module will need to be put into V1 mode (in the settings) to keep working with your V1 keys that you have previously configured into the module. So after updating our module to the latest release, go into the module settings and enable V1 mode for the module to keep working.
2. V2 recaptcha is better than V1. So we would suggest that all users of the module update to V2. To do this, you update our module to the latest release, then go into the Google Recaptcha management page, and delete your domains security keys, then generate new keys for V2. They have instructions on that process, all be is hard to understand.
Once you have new V2 recaptcha keys, you update these new keys back into our module and ensure that the V1 mode is NOT enabled. The V2 recaptcha will then run on your site.

To Remove and Uninstall

Step 1. From the iwebs – Register module settings, click the “Restore Register Control”

DNN Remove Recaptcha

2. Uninstall the iwebs – Register module as you would any other DNN module.

 

Thoughts

This was a quick solution to some script kiddies attempt to attack DNN. I’m actually struggling to find the purpose (if you wrote the bot and you are reading this, I would love to hear why).  There is little threat by the registrations that I can find. More annoying that anything else. While Recaptcah can be broken, it would take some smarts or costs to use online services for the bot, so I suspect they will not bother and recaptcha will reign for this problem. In any case, if they spend some time and effort making the bot work for recaptcah, it is easy enough for us to implement some of the loads of other solutions available to stop them.

Donations

We included a donation button. If you find the solution, blog, research we did, modules we created and responses we provide to be helpful. Please consider throwing us a few $

DNN Popup Greeting–Kill it Good!

In the recent DNN 7 releases, they have unfortunately made by default a popup greeting after sign in, that in theory would drive clients to signup for their spam.

Problem is (like lots of recent DNN features) that the “tick to never show again” does not work, and in some really recent releases, the popup goes crazy and does not allow you to progress into the site.

In other words, they killed their own product with spam crap.

Easy fix. Open the file in the web root, called: Default.aspx.cs

Look for this line: ManageGettingStarted();

Just throw a // before it to comment it out.

Save and restart the IIS site. Should fix it fast and for good.

DotNetNuke – Could not load file or assembly 'Telerik.Web.UI' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

image

After upgrading a DNN website, we received this error message.

The underlying cause of the problem is sloppy release version upgrades of the DNN core product.

The issue is that the release.config file in the update versions of DNN references older versions of the Telerik.Web.UI .dll file in the /bin folder of the install versions of DNN. This means that the settings in your newly updated web.config file are referencing an old version of the Telerik file.

The fix is easy

Right click on the Telerik.Web.UI.dll file in your sites /bin folder.

If the file is not there, then download the install version of your DNN site package from http://dotnetnuke.codeplex.com

Then extract the file to the /bin folder.

image

Look at the version number of the file.

Edit your web.config file to match this data:

image

Save and you are done.

DotNetNuke HTML Editor Background Black

When you get a black background in the HTML Editor.

image

The solution is easy.

Look for the file found here:

\Providers\HtmlEditorProviders\Telerik\Config\ConfigDefault.xml

Edit it to add this line:

<property name="CssFiles">~/Providers/HtmlEditorProviders/Telerik/Config/EditorCustom.css</property>

Looking like this:

image

Then edit this file:

\Providers\HtmlEditorProviders\Telerik\Config\EditorCustom.css

To look like this:

body
{
  background-color: white;
  background-image: url(image_path);
  color: black;
}

image

 

That’s about it.

DotNetNuke Can’t Login Index #: 0

The Problem

Index #: 0

image

Recently while working with a DotNetNuke website, we found that attempting to login to the site generated this error:

SQL Exception
Error Details
File 
Error   Index #: 0
Source: .Net SqlClient Data Provider
Class: 17
Number: 1105
Procedure: AddEventLog
Message: System.Data.SqlClient.SqlException: Could not allocate space for object ‘dbo.EventLog’.’PK_EventLogMaster’ in database ‘www.sitedatabase.com’ because the ‘PRIMARY’ filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(SqlConnection connection, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, String spName, Object[] parameterValues) at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.SqlDataProvider.AddLog(String logGUID, String logTypeKey, Int32 logUserID, String logUserName, Int32 logPortalID, String logPortalName, DateTime logCreateDate, String logServerName, String logProperties, Int32 logConfigID) at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.DBLoggingProvider.WriteLog(LogQueueItem logQueueItem)

After a investigating the site and server we found that this was caused by the SQL server running out of room on the disk hosting the database connected to this DNN site.

The Solution

Free up more space on the SQL database disk.

DotNetNuke (dnn) jQuery problems admin menu

image

DotNetNuke jQuery Problems

Recently there was an update to jQuery that caused some problems with DotNetNuke. The problems include:

  • Strange or missing popup effects in custom jQuery modules
  • Admin menu hiding the menu items on Standard DNN Dark Knight Skin
  • Modules using jQuery failing to function as desired

The Problem

The problem is associated with some bugs in the jQuery released and hosted googleapis. The bugs are not related to DotNetNuke directly but the jQuery used in many instances of jQuery.

The Solution

The solution is an easy one. You just need to login to your DotNetNuke website with a Host Account, and modify the jQuery settings under the HOST / ADVANCED SETTINGS to a more recent and bug free version of jQuery UI.

 

image

Pasting this URL: https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js into the “Hosted jQuery UI URL" and ensuring the “Use Hosted jQuery Version” is ticked.

Upgrading Steps for DotNetNuke from DNN 4.x.x to DNN 6.x.x

image

Specifically we wanted to take a version of DotNetNuke from 4.9.1 to 6.1.3 today and actually found that it worked perfectly.

We did take some steps that helped a lot. This may be of value to some of you.

Before we Began

1. Backed up the entire file system for the website.

2. Backed up the database on SQL server for the site in question.

3. Ensured we had a HOST login account that worked.

4. Ensured the server we were running on (Windows 2008 R2) was patched and running .Net Framework version 3.5 SP1.

5. If your site is busy, work out a way to stop the traffic. One way is to add a portal alias, like test.domain.com in your DNN website. Setup a DNS entry to that test.domain.com points to the IP address of your DNN web server. In IIS, setup a Binding, so that test.domain.com will answer for your site.

Then access the site on test.domain.com and check you can login, etc.

Then remove the binding in IIS for www.domain.com (temporarily while you play upgrade).

This way, the site will not answer normal user access, but will answer you when you go to test.domain.com.

 

Update Path

We suggest the following table for upgrading your DNN Website.

Note: If you are upgrading a version prior to DNN 4.6.2, then you will need to manually update the web.config file. After this version the updates are automatic.

 

Steps On Upgrade

On Codeplex, Click on View All Downloads

image

Find the version for the next upgrade step from the table above. Then find the Version Upgrade download link.

image

Download the .zip file to your server. Then extract the contents directly over the existing website directory structure.

You will be asked to overwrite files, Tick yes to all.

You will be asked to overwrite folders, Tick Apply to all – And continue.

Once you have extracted, hit your website in a browser, and watch the upgrade happen before your eyes.

Repeat the steps of backing up after each successful update, and download the next update package and repeat the process.

 

Tricky Bits

If you are using the XML module, on a DNN version before 5.3.0, then you should obtain the latest update of the module before moving past 5.3.0.

If you have the Ifinity URL Master module. We suggest turning it off to upgrade.

 

After Upgrade

In IIS you will wan to move the website to a new application pool that is running .net 3.5 or 4.0 Integrated. You cannot share application pools with earlier DNN versions that run on .net 2.0.

Jump into the HOST settings, and configure things like, friendly URL’s, DNN Host Menu Options, and performance settings.

If you disabled bindings (from the initial steps 5 above) re-enable them and test access.

 

DotNetNuke Upgrade Service and Support

We offer a DotNetNuke Support Service that can include the upgrading of DNN websites for you. This is especially useful if you are not confident with either .net websites or IIS server administration.

We are happy to help you evaluate the upgrade path and potential problems. The cost of the service is in effect calculated at at an hourly estim
ate. It should be noted that if everything goes well, and trouble free, there there is at least 1 hours work in this upgrade, usually more as there are often little bugs to sort out.

Please contact us for support here: http://www.interactivewebs.com/Services/DotNetNukeSupport.aspx

Additional References

http://www.datasprings.com/resources/articles-information/dotnetnuke-articles/upgrading-dotnetnuke-4.9-to-dotnetnuke-6.0

DotNetNuke 6 running in .Net 4.0 Server Error in '/' Application Version=3.5.0.0 Version=4.0.0.0

image

We had a requirement today to run a DotNetNuke Website in .Net 4.0 as some code we are using as part of the Microsoft CRM 2011 SDK require .Net 4.0.

Problem is that with many of the DotNetNuke websites, they have some references that will cause this error when you flip your website worker process to 4.0. in IIS.

image

This will give you an error that looks like this:

 

image

Generates an error:

Server Error in ‘/’ Application.


Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1703: An assembly with the same identity ‘System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ has already been imported. Try removing one of the duplicate references.
Source Error:

[No relevant source lines]

Source File: Line: 0

Show Detailed Compiler Output:

 

Interestingly too the reference to Version=4.0.0.0 initially said Version-3.5.0.0 until the second page refresh on the error.

The Problem

The problem in our case, and it may differ with others, related to an older file for Microsoft Ajax.

There is a file called: System.Web.Extensions.dll

in the \bin    folder.

We renamed this to: System.Web.Extensions.dll.bak

And our problem was fixed.

This is due to an older way that Microsoft handled Ajax vs the new way in .Net 4.0.

 

DotNetNuke Support Services

We do offer DotNetNuke support services and would be happy to assist others with this or other DNN problems that need professional support services with.

http://www.interactivewebs.com/Services/DotNetNukeSupport.aspx

Why use flash anymore?

image

The net is changing fast. Release of the iPad and other mobile devices that have correctly made the decision to discontinue Adobe Flash.

I say correct decision because not only is flash yesterdays technology, but it is far from the optimal way to produce simple motion in web pages.

Flash still has it’s place, just not as a way to inject interesting motion into websites.

So what do we use on http://www.InteractiveWebs.com home page?

We have some simple code that renders motion:

<div class="slideshow">
<div class="slide">
<div class="inblock_first">
<div class="wsc_image_frame">
<div class="wsc_frame_tl">
<div class="wsc_frame_tr">
<div class="wsc_frame_tc">
</div>
</div>
</div>
<div class="wsc_frame_cl">
<div class="wsc_frame_cr">
<div class="wsc_frame_cc">
<img alt="" src="/Portals/0/banners/slide2.jpg" />
</div>
</div>
</div>
<div class="wsc_frame_bl">
<div class="wsc_frame_br">
<div class="wsc_frame_bc">
</div>
</div>
</div>
</div>
</div>
<div class="inblock_second">
<h1>Have a Business that needs to get a message out?</h1>
<p>InteractiveWebs provides the best of Content Management Systems on our professional hosting services.<br />
Combining DotNetNuke, WordPress Blogs, iPhone Apps, Microsoft CRM &amp; hosted solutions..<br />
<br />
</p>
<a class="button2" href="/Services/Mushroom.aspx"><span><strong>More</strong></span></a>
</div>
<div class="cleaner"></div>
</div>
<div class="slide">
<div class="inblock_second">
<h1>We have a solution… that is perfect…</h1>
<p>We have some&nbsp;increasable solutions with years of experience…</p>
<h4>
We would love to share them!</h4>
<p><br />
</p>
<a class="button2" href="/Services/Mushroom.aspx"><span><strong>More</strong></span></a>
</div>
<div class="inblock_first">
<div class="wsc_image_frame">
<div class="wsc_frame_tl">
<div class="wsc_frame_tr">
<div class="wsc_frame_tc">
</div>
</div>
</div>
<div class="wsc_frame_cl">
<div class="wsc_frame_cr">
<div class="wsc_frame_cc">
<img alt="" src="/Portals/0/banners/slide1.jpg" />
</div>
</div>
</div>
<div class="wsc_frame_bl">
<div class="wsc_frame_br">
<div class="wsc_frame_bc">
</div>
</div>
</div>
</div>
</div>
<div class="cleaner"></div>
</div>
<div class="slide">
<div class="wsc_image_frame">
<div class="wsc_frame_tl">
<div class="wsc_frame_tr">
<div class="wsc_frame_tc">
</div>
</div>
</div>
<div class="wsc_frame_cl">
<div class="wsc_frame_cr">
<div class="wsc_frame_cc">
<img alt="" src="/Portals/0/banners/slide.jpg" />
</div>
</div>
</div>
<div class="wsc_frame_bl">
<div class="wsc_frame_br">
<div class="wsc_frame_bc">
</div>
</div>
</div>
</div>
<div class="cleaner"></div>
</div>
</div>

 

The source references some jQuery effects known as cycle: http://jquery.malsup.com/cycle/

You will see on this page that it uses code in this method:

<!DOCTYPE html>

<html>

<head>

<title>JQuery Cycle Plugin – Basic Demo</title>

<style type="text/css">

.slideshow { height: 232px; width: 232px; margin: auto }

.slideshow img { padding: 15px; border: 1px solid #ccc; background-color: #eee; }

</style>

<!– include jQuery library –>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

<!– include Cycle plugin –>

<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>

<script type="text/javascript">

$(document).ready(function() {

$(‘.slideshow’).cycle({

fx: ‘fade’ // choose your transition type, ex: fade, scrollUp, shuffle, etc…

});

});

</script>

</head>

<body>

<div class="slideshow">

<img src="http://cloud.github.com/downloads/malsup/cycle/beach1.jpg" width="200" height="200" />

<img src="http://cloud.github.com/downloads/malsup/cycle/beach2.jpg" width="200" height="200" />

<img src="http://cloud.github.com/downloads/malsup/cycle/beach3.jpg" width="200" height="200" />

<img src="http://cloud.github.com/downloads/malsup/cycle/beach4.jpg" width="200" height="200" />

<img src="http://cloud.github.com/downloads/malsup/cycle/beach5.jpg" width="200" height="200" />

</div>

</body>

</html>

 

Producing this page: http://jquery.malsup.com/cycle/basic.htmlimage

Within DotNetNuke

Within DotNetNuke, there are a bunch of module and skins that have this effect built in. We use a skin known as LightHeads (not developed by us) that uses some hard coded references that make the implementation of this effect really simple. As the first block of code above indicates.

We love jQuery and have used it in our Mushroom Image module and our Mushroom Lite Module.

DotNetNuke Forum Module 05.00.02 The missing link!

DotNetNuke 05.06.03 Pain

If you look at the project downloads for dotnetnuke, you will notice that the forums module has the latest version as: 05.00.01

image

And if you click the link from within this page: http://www.dotnetnuke.com/Resources/Downloads/Projects-Downloads.aspx

05.00.01 is exactly what you get.

All sounds neat and tidy… right?

Not really, because if you install the latest version of DotNetNuke 05.06.03 (an important security release) you will kill your forums. Dead as dead.

And if you check around for an update of the forum module, you will not find one either in your Module Definitions, or in the DotNetNuke website. But keep looking to codeplex and you find this:

image

05.00.02 and what is strange, it is released before the DNN 05.06.03 update, like significantly before it… like 1 month.

This Forum Update is NEEDED if you want the forum module to work on DNN 05.06.03

http://dnnforum.codeplex.com/releases/view/67840

Release Notes

The same module as 5.0.1, except compiled against DotNetNuke 5.6.3 (and therefore is a minimum requirement) and the same version of Telerik (2011 SP2) included with it.
NOTE: This was compiled against, and for, 5.6.3 and is included with that release (Not released yet, as of June 12th (try 5 July).

All so confusing!

It waisted a lot of our time trying to work out what is going on. All we know is that DNN 05.06.03 broke a bunch of stuff, including the Forum Module. There is a fix but it is hidden on codeplex and is incorrectly referenced.

Very Unprofessional DNN Corp!

What you need to know

If you update to DNN 05.06.03 – your forums will die.

To fix it, download the hidden forum update 05.00.02 here: http://dnnforum.codeplex.com/releases/view/67840

Problem With DNN Blog Module 04.01.00 – 01

imageWe found an issue with what is the current release version of DotNetNuke Blog module 04.01.00 or 04.01.01.
First up, we don’t know what the version number should actually be, as the compiled version on the download is 04.01.00 but the source code is referenced as 04.01.01.
We presume there is some difference, but who knows what it is.

Anyway The Problem

The problem is that any forms on a page that run the blog module, will not allow form data to be validated. By validated, we are talking about ensuring a number is entered in a number field and text in a name filed etc.
The cause is the blog module is using an old ASP.Net 1.0 validation function. While it should be using ASP.NET 2.0 with the updated validation behaviours as found here:
http://msdn.microsoft.com/en-us/library/0ke7bxeh.aspx
With this mistake, if you use Page.Validate on ASP.NET 2.0, page validation groups are ignored and the controls are validated.
Why the BLOG module is even coded this way is quite questionable in any case. However without DNN being a true open source system, we have no ability to fix this were needed in the source.

Our solution

We fixed the problem and recompiled a version that people can download an use for free.
Blog_04.01.01_Install A
You can install this on top of any DNN blog module 04.01.00 and we would expect that future releases of the blog module will not be affected by this version we compiled. However they may well revert back to their junk code in the future releases.

DotNetNuke AjaxControlToolkit, Version=3.0.30930.28736 Error

Could not load file or assembly ‘AjaxControlToolkit, Version=3.0.30930.28736, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

We were playing today with a trial module from another developer. Received the above error. After much mucking around, we found that the very specific version of the

  • AjaxControlToolkit.dll

file that came with the module, was not installed during the normal module setup.

We extracted the file into the \bin\ directory on the site, and joy to the world.

Strange that a specific version is required and that the 3.5 or 4.0 version does not work. This is how they referenced a specific version. Not a good way to program.

How do I know DotNetNuke Corp is off the rails?

There are load of features and functions about DotNetNuke that tick us off. Some big, some small and some that are baseless. It never ceases to astound me why they do some features and functions so poorly.

Today I had to write about a pet hate…

Why when we go to the module definition page, do we see a list of “Upgrades?” with the painfully ugly Microsoft style highlighted version number.

image

Really. Whoever built that system.. was that look the best you could come up with. It is painful enough that the stupid system does not allow third party developers to reference an RSS feed for their own updates. (Would have thought that was a no brainer). But why Microsoft Word frigging green highlight!

How about something a little classier in the default look. Is this 1998? Think not!

And for anyone reading this who thinks… “well you did not develop it.” That’s only because is is not an open source platform. One of the biggest problems with DotNetNuke is that it is not open source. They claim yes… but just because you call something by a name, does not make it accurate!

There… I said it!

Now back to work.

DotNetNuke.Entities.Portals.PortalSettings..ctor(Int32 tabID, PortalAliasInfo objPortalAliasInfo) DNN 05.06.00

The Problem

After updating a DNN site from 05.01.01 to DNN 05.06.00 we received the following error.

image

——————————————————————————–

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]
   DotNetNuke.Entities.Portals.PortalSettings..ctor(Int32 tabID, PortalAliasInfo objPortalAliasInfo) +49
   DotNetNuke.HttpModules.UrlRewriteModule.OnBeginRequest(Object s, EventArgs e) +2087
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

 

We found that this is a bit of a reported issue with DNN websites that have been upgraded to DNN 05.06.00. There is a bit of chatter about it here:
http://www.dotnetnuke.com/Resources/Forums/tabid/795/forumid/200/threadid/396504/scope/posts/Default.aspx

Basically the problem is that if you access a page like

http://domain.com/AboutUs/History/tabid/108/Default.aspx The site will work.

but if you access http://www.domain.com  it fails.

There is a lot of heads spinning on this one, talk about the HTTP handler and there is no doubt in our mind that much is not right with the DNN 05.06.00 release. Actually this release has probably caused us the most headaches for our modules in the last few years.

The Fix

imageWe found the fix for this problem is easy. Set the IIS Application Pool that relates to the site’s managed pipeline to “Integrated” from “classic”.

In IIS 7

it looks a little like that.

This should fix this particular bug in a few seconds.

Error The transaction log for database “domain.com” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

While accessing a DotNetNuke website today, I was getting this error all the time.

Error   The transaction log for database “domain.com” is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Event ID 3001

  • Event code: 3001
    Event message: The request has been aborted.
    Event time: 2/11/2010 12:28:32 PM
    Event time (UTC): 2/11/2010 1:28:32 AM
    Event ID: cc9168019d0b42cabde5ab8fa741927d
    Event sequence: 13
    Event occurrence: 12
    Event detail code: 0

I found this one a little perplexing. On further investigation I found that the transaction logging for the SQL server supporting this was massive. Around 980 meg when I would expect it to run around 15 meg.

Initially I tried killing all processes with active connections to the database, but that did not have the desired result. (We all know what a pain that can be in SQL). So I set the database to “Simple”, and tried to Detach the re-attach.

Still no joy!

All of this round and round ended up with an IIS server and SQL server reboot. All came good and the net result is that I cannot explain the fail or fix it.

Hope this helps someone make the reboot decision faster than I did. That’s another 2 hours of my like I will never get back!