Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DNN 5 Error: GetAboutTooltip, object reference not set to an instance of an object.DNN 5 Error: GetAboutTooltip, object reference not set to an instance of an object.
Previous
 
Next
New Post
9/8/2009 4:58 AM
 

Hi

We are seeing an error that first started in DNN 5.1.1 (we're not sure exactly when) and is only seen when going to Host > Extensions.  We have upgraded to 5.1.2 in the hope it would resolve the error but we continue to see it.  Clearing the DNN cache, restarting DNN, restarting IIS and restarting the server have all made no difference.  In all other ways DNN appears to function normally and we can install modules via Host > Module Definitions.

DNN is running on Windows Web Server 2008 64-bit, IIS 7.0 and SQL Server 2008 Express Edition 64-bit.  There are some third party modules installed but the error seems to suggest a bug in the core code relating to the GetAboutTooltip so it doesn't seem like something critical in itself is failing?

Assistance would be greatly appreciated!

AssemblyVersion: 5.1.2
PortalID: 0
PortalName: DNN WS1 Root
UserID: 1
UserName: host
ActiveTabID: 36
ActiveTabName: Extensions
RawURL: /tabid/36/portalid/0/Default.aspx
AbsoluteURL: /Default.aspx
AbsoluteURLReferrer: http://domain.com/tabid/18/portalid/0/Default.aspx
UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.43 Safari/530.5
DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider
ExceptionGUID: c894d0c5-5fd2-4756-b775-91b5a2475bef
InnerException: Object reference not set to an instance of an object.
FileName:
FileLineNumber: 0
FileColumnNumber: 0
Method: DotNetNuke.Modules.Admin.Extensions.Extensions.GetAboutTooltip
StackTrace:
Message: DotNetNuke.Services.Exceptions.PageLoadException: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.Modules.Admin.Extensions.Extensions.GetAboutTooltip(Object& dataItem) at ASP.desktopmodules_admin_extensions_extensions_ascx.__DataBinding__control21(Object sender, EventArgs e) at System.Web.UI.Control.OnDataBinding(EventArgs e) at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource) at System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource) at System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) at DotNetNuke.Modules.Admin.Extensions.Extensions.BindGrid() at DotNetNuke.Modules.Admin.Extensions.Extensions.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.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---
Source:
Server Name: CAN-DNN-WS1

Regards,

roadie.

 
New Post
9/8/2009 7:31 AM
 

please check, whether there is a 3rd party extension entry with missing description, which might cause the error.


Cheers from Germany,
Sebastian Leupold

dnnWerk - The DotNetNuke Experts   German Spoken DotNetNuke User Group

Speed up your DNN Websites with TurboDNN
 
New Post
9/8/2009 11:27 AM
 

Sebastian Leupold wrote

please check, whether there is a 3rd party extension entry with missing description, which might cause the error.

Hi Sebastian

We have deleted all third party modules without correcting the error - we still cannot see anything on the Host > Extensions page other than the error.

We have looked through the database but are not sure which tables and columns to look in - can you advise please?

Thanks in advance,

roadie.

 
New Post
9/9/2009 5:12 AM
 

Hi Sebastian

Some additional information which may assist you.

I believe I have found the function returning the error (comments are mine):

Protected Function GetAboutTooltip(ByRef dataItem As Object) As String

Dim returnValue As String = String.Empty

''' If we're on the Host Extensions page then...
If (Me.ModuleContext.PortalSettings.ActiveTab.IsSuperTab) Then

''' Error likely in here as this code is skipped if Admin Extensions page (which works) is opened.

Dim portalID As Integer = Convert.ToInt32(DataBinder.Eval(dataItem, "PortalID")) '''We suspect this may be where the error occurs.

If (Not portalID = Null.NullInteger AndAlso Not portalID = Integer.MinValue) Then

Dim portal As PortalInfo = PortalCtrl.GetPortal(portalID)
returnValue = String.format( _
Localization.GetString("InstalledOnPortal.Tooltip", LocalResourceFile), _
portal.PortalName)

Else

returnValue = Localization.GetString("InstalledOnHost.Tooltip", LocalResourceFile

End If

End If
Return returnValue

End Function

If we knew exactly what data this function was calling it would help.  We do seem to be seeing some legacy data in the database relating to a skin that was installed and then removed but manually deleting and editing the data has failed to fix the problem.

Alternatively, the code could be wrapped in the VB.NET equivalent of a try/catch statement with the return value being set to something like, "Missing ToolTip."  I think this is a fix that should be considered for DNN 5.1.3 as a relatively small error in a 3rd party extension has completely disabled the Host > Extensions page.  What do you think?

Thanks,

roadie.

 
New Post
9/9/2009 8:52 AM
 

Hi Sebastian

We have now managed to resolve the problem.  It does not relate to an empty 'Description' field in the database against a third-party module as you suspected.  Instead, it relates to DNN5 not deleting skins assigned to a portal when the portal itself was deleted - I think this issue is therefore merely a strange symptom of a much more fundamental problem with DNN (we originaly installed v5.1.1 clean so the error was present in that version).

The above bug results in legacy rows in dbo.Packages and dbo.SkinPackages with the former being much more important.  The GetAboutTooltip error is thrown because the tooltip provides information on whether the extension (in this instance Skins and Containers) is installed at host or portal level.  If at portal level, it attempts to retrieve the portal name.  So, when it finds one of the legacy rows in dbo.Packages (which has a PortalID which no longer exists) it cannot retrieve the portal name and hence fails (taking the whole Host > Extensions page down) because there is no error handling implemented in the function.

We diagnosed and then fixed this in several stages.  First, we removed the call to GetAboutTooltip in Extensions.ascx which allowed the page to render.  Next, we reverse the first change and updated the GetAboutTooltip method itself in Extensions.ascx.vb to insert error handling and return any error in the extension tooltip (modified code provided below).  This allowed us to identify that number of Skins and Containers were generating the error.  Investigation at the database level then revealed that the extensions related to Portals that no longer existed.

By updating the Description field in the dbo.Packages table for the offending extensions with the PackageID we were able to view in the Host > Extensions page the exact database rows that were failing.  Manually updating these rows with a valid PortalID did fix the problem as expected.  However, dbo.SkinPackages still had legacy PortalIDs so rather than update those all manually as well (ensuring we matched the changes made in dbo.Packages) we simply undid our database changes and deleted the extensions through the Host Extensions page which deleted all the rows in both the aforementioned tables.  As far as we can tell the tooltip problem is now completely resolved and the Host > Extensions page renders perfectly.

I would therefore recommend two things:

  1. DNN investigate the underlying problem with legacy Skin and Container rows being left in dbo.Packages when Portals are deleted through Host > Portals.
  2. DNN update the GetAboutTooltip module to include error handling as per the example below.
Protected Function GetAboutTooltip(ByRef dataItem As Object) As String
        Dim returnValue As String = String.Empty
        Try
            If (Me.ModuleContext.PortalSettings.ActiveTab.IsSuperTab) Then
                Dim portalID As Integer = Convert.ToInt32(DataBinder.Eval(dataItem, "PortalID"))
 
                If (Not portalID = Null.NullInteger AndAlso Not portalID = Integer.MinValue) Then
                    Dim portal As PortalInfo = PortalCtrl.GetPortal(portalID)
                    returnValue = String.format( _
                     Localization.GetString("InstalledOnPortal.Tooltip", LocalResourceFile), _
                     portal.PortalName)
                Else
                    returnValue = Localization.GetString("InstalledOnHost.Tooltip", LocalResourceFile)
                End If
            End If
        Catch ex As exception
            returnValue = "Cannot Retrieve Portal Name (Possible Reference to Deleted PortalID in dbo.Packages): " + ex.Message
        End Try
        Return returnValue
End Function

All the above information is provided in the spirit of sharing our experience in the hope that it may help others who see the same problem and also to improve the fantastic product that is DotNetNuke.

Regards,

roadie.

 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DNN 5 Error: GetAboutTooltip, object reference not set to an instance of an object.DNN 5 Error: GetAboutTooltip, object reference not set to an instance of an object.


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out