One thing that can kill a DotNetNuke quite quickly is a module that goes "rogue" and starts throwing regular errors in the scheduler. This is especially the case when it comes to a module that might be heavily used. Not only do you just have the fact that you are having errors, but you also have the issues around the fact that you can't find TRUE errors in the log. In a world long ago, back in the DNN 4.4 - 4.8.x days there used to be an issue with certain modules that has apparently started to rear its ugly little head again and I'm not sure why. In this post, I'll investigate this specific error type.
The Error
The actual module in error might differ from DNN Installation to Installation, but you will see a number of common trends. The error will be similar to the following.
Error Creating BusinessControllerClass 'DotNetNuke.Modules.Links.LinkController, DotNetNuke.Modules.Links' of module(DNN_Links)
The key element here is "Error Creating BusinessControllerClass", that tells us that it was not able to find the proper information for integration.
Validating The Root Cause
The good news is there is a quick and easy way to determine if my recommended fix will work. If you go to "Host" ->"SQL" and run the following query and see results, you have found the culprit.
What this query is looking for is any module that has an invalid value for the "supported features". For the short summary, SupportedFeatures determines which of the optional Module Level interfaces are supported, such as "ISearchable" and "IPortable". Any negative value is incorrect and there was at one point a DNN upgrade script that would fix these records. But I am seeing more and more sites suffering from this.
The Fix
Amazingly the fix is very simple, a module that has a value less than 0 in the SupportedFeatures module can simply be updated to have a value of 0, and the errors will go away. So simply running the following script:
Now, with any SQL change, I strongly recommend that you backup your database BEFORE making this change, just in case!
After making the above change you should see the recurring errors go away.