SharePoint Blogs / SharePoint University
SharePoint Blogs and SharePoint University - all in one place!
Need SharePoint Training? Attend a SharePoint Bootcamp!

Please delete cookies related to sharepointblogs.com and sharepointu.com to resolve login issues!

SharePoint Error - 0x80020009 (DISP_E_EXCEPTION)

It appears that there's a mistake in the Windows SharePoint Service 3.0 SDK documentation.  The Configuration element has an "optional" element called ImageUrl ... but if you don't include this attribute then you get the above error when visiting a SharePoint web.

http://msdn2.microsoft.com/en-us/library/ms476942.aspx


Posted 01-21-2008 4:09 PM by georgebonney

Comments

wpowell wrote re: SharePoint Error - 0x80020009 (DISP_E_EXCEPTION)
on 11-21-2008 2:47 PM

Thank you for this!

Akhilesh Nair wrote re: SharePoint Error - 0x80020009 (DISP_E_EXCEPTION)
on 01-22-2009 8:07 AM

I have a Timer Job, its giving an error in the which reads  "String cannot be of zero length." Stack trace :Parameter name: oldValue Stack Trace:    at System.String.Replace(String oldValue, String newValue)

  at grm_VO_PMONotificationJob.grm_VO_PMONotificationJob.GetConstantValueForPMONotificationMail(String strConstantName, String strConstantType, String OldManagerName, String OldDirectorName, String OldJobTitle, String NewManagerName, String NewDirectorName, String NewJobTitle, String EmployeeName, String Stage)  

Here is the method that is mentioned in the stacktrace.

public string GetConstantValueForPMONotificationMail(string strConstantName, string strConstantType, string OldManagerName, string OldDirectorName, string OldJobTitle, string NewManagerName, string NewDirectorName, string NewJobTitle, string EmployeeName, string Stage)

       {

           try

           {

               using (SPSite voSite = new SPSite(strVOSite))

               {

                   using (SPWeb voWeb = voSite.OpenWeb())

                   {

                       SPList voList = voWeb.Lists["VOConstants"];

                       SPQuery voQuery;

                       string Old_Manager = string.Empty;

                       string Old_JobTitle = string.Empty;

                       string Old_Director = string.Empty;

                       string New_Manager = string.Empty;

                       string New_Director = string.Empty;

                       string New_JobTitle = string.Empty;

                       string Emp_Name = string.Empty;

                       string Req_Stage = string.Empty;

                       Emp_Name = EmployeeName;

                       Old_Manager = OldManagerName;

                       Old_JobTitle = OldJobTitle;

                       Old_Director = OldDirectorName;

                       New_Manager = NewManagerName;

                       New_JobTitle = NewJobTitle;

                       New_Director = NewDirectorName;

                       Req_Stage = Stage;

                       string strConstantValue = string.Empty;

                       SPListItemCollection matchingItems = null;

                       SPListItem voItem;

                       #region Retrieving PMO Email Id

                       voQuery = new SPQuery();

                       string strPMOEmail = string.Empty;

                       voQuery.Query = "<Where><Eq><FieldRef Name='ConstantName'/><Value Type='Text'>PMOEmail</Value></Eq></Where>";

                       matchingItems = voList.GetItems(voQuery);

                       if (matchingItems.Count > 0)

                       {

                           voItem = matchingItems[0];

                           strPMOEmail = voItem["ConstantValue"].ToString().ToLower().Trim();

                           strPMOEmail = strPMOEmail.Replace("<p>", string.Empty);

                           strPMOEmail = strPMOEmail.Replace("</p>", string.Empty);

                           strPMOEmail = strPMOEmail.Replace("</a>", string.Empty);

                           strPMOEmail = strPMOEmail.Trim();

                           while (strPMOEmail.Contains("<a href="))

                           {

                               strPMOEmail = strPMOEmail.Replace(strPMOEmail.Substring(strPMOEmail.IndexOf("<a href="), strPMOEmail.IndexOf(">") + 1 - strPMOEmail.IndexOf("<a href=")), string.Empty);

                           }

                           strPMOEmail = strPMOEmail.Replace("<div>", string.Empty);

                           strPMOEmail = strPMOEmail.Replace("</div>", string.Empty);

                           strPMOEmail = strPMOEmail.Replace("&nbsp;", string.Empty);

                           strPMOEmail = strPMOEmail.Replace("<br>", string.Empty);

                           if (strPMOEmail.ToLower().Contains("class=externalclass"))

                           {

                               strPMOEmail = strPMOEmail.Substring(strPMOEmail.IndexOf('>') + 1);

                           }

                           if (strConstantValue == "PMOEmail")

                           {

                               return strPMOEmail;

                           }

                       }

                       #endregion

                       voQuery = new SPQuery();

                       matchingItems = null;

                       voItem = null;

                       voQuery.Query = "<Where><Eq><FieldRef Name='ConstantName'/><Value Type='Text'>" + strConstantName + "</Value></Eq></Where>";

                       matchingItems = voList.GetItems(voQuery);

                       if (matchingItems.Count > 0)

                       {

                           voItem = matchingItems[0];

                           strConstantValue = voItem["ConstantValue"].ToString();

                           if (strConstantValue.Contains("<div>") ||

                               strConstantValue.Contains("</div>") ||

                               strConstantValue.Contains("<a>") ||

                               strConstantValue.Contains("</a>") ||

                               strConstantValue.Contains("\r") ||

                               strConstantValue.Contains("<\n>") ||

                               strConstantValue.Contains("&nbsp;") ||

                               strConstantValue.Contains("<br>") ||

                               strConstantValue.Contains("<p>") ||

                               strConstantValue.Contains("</p>") ||

                               strConstantValue.Contains("<div>&nbsp;</div>") ||

                               //strConstantValue.Contains("Emp_EmailID") ||

                               //strConstantValue.Contains("Mgr_EmailID") ||

                               //strConstantValue.Contains("Dir_EmailID") ||

                               strConstantValue.Contains("PMO_EmailID") ||

                               //strConstantValue.Contains("Pend_EmailID") ||

                               strConstantValue.Contains("URL") ||

                               //strConstantValue.Contains("Comments_Value") ||

                               //strConstantValue.Contains("Emp_FirstName") ||

                               //strConstantValue.Contains("Emp_LastName") ||

                               //strConstantValue.Contains("Mgr_FirstName") ||

                               //strConstantValue.Contains("Mgr_LastName") ||

                               //strConstantValue.Contains("Dir_FirstName") ||

                               //strConstantValue.Contains("Dir_LastName") ||

                               //strConstantValue.Contains("PMO_FirstName") ||

                               //strConstantValue.Contains("PMO_LastName") ||

                               strConstantValue.Contains("<a href=") ||

                               strConstantValue.Contains("Old_Manager") ||

                               strConstantValue.Contains("Old_Director") ||

                               strConstantValue.Contains("Old_JobTitle") ||

                               strConstantValue.Contains("New_Manager") ||

                               strConstantValue.Contains("New_Director") ||

                               strConstantValue.Contains("New_JobTitle") ||

                               strConstantValue.Contains("Emp_Name") ||

                               strConstantValue.Contains("Req_Stage"))

                           {

                               if (strConstantType != "Body")

                               {

                                   strConstantValue = strConstantValue.Replace("<div>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("</div>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("<a>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("</a>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("\n", string.Empty);

                                   strConstantValue = strConstantValue.Replace("\r", string.Empty);

                                   strConstantValue = strConstantValue.Replace("<p>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("</p>", string.Empty);

                                   strConstantValue = strConstantValue.Replace("&nbsp;", " ");

                                   strConstantValue = strConstantValue.Replace("<br>", string.Empty);

                                   while (strConstantValue.Contains("<a href="))

                                   {

                                       strConstantValue = strConstantValue.Replace(strConstantValue.Substring(strConstantValue.IndexOf("<a href="), strConstantValue.IndexOf(">") + 1 - strConstantValue.IndexOf("<a href=")), string.Empty);

                                   }

                               }

                               strConstantValue = strConstantValue.Replace("<div>&nbsp;</div>", "<br />");

                               strConstantValue = strConstantValue.Replace("&nbsp;", " ");

                               strConstantValue = strConstantValue.Replace("Old_Manager", Old_Manager);

                               strConstantValue = strConstantValue.Replace("Old_Director", Old_Director);

                               strConstantValue = strConstantValue.Replace("Old_JobTitle", Old_JobTitle);

                               strConstantValue = strConstantValue.Replace("New_Manager", New_Manager);

                               strConstantValue = strConstantValue.Replace("New_Director", New_Director);

                               strConstantValue = strConstantValue.Replace("New_JobTitle", New_JobTitle);

                               strConstantValue = strConstantValue.Replace("PMO_EmailID", strPMOEmail);

                               strConstantValue = strConstantValue.Replace("Emp_Name", Emp_Name);

                               strConstantValue = strConstantValue.Replace("Req_Stage", Req_Stage);

                               /*if (workflowProperties.Item["Comments"] != null)

                                   strComments = workflowProperties.Item["Comments"].ToString();

                               if (strComments.Contains("<div>") ||

                              strComments.Contains("</div>") ||

                              strComments.Contains("<a>") ||

                              strComments.Contains("</a>") ||

                              strComments.Contains("&nbsp;") ||

                              strComments.Contains("<br>"))

                               {

                                   if (strConstantType != "Body")

                                   {

                                       strComments = strComments.Replace("<div>", "");

                                       strComments = strComments.Replace("</div>", "");

                                       strComments = strComments.Replace("<a>", "");

                                       strComments = strComments.Replace("</a>", "");

                                       strComments = strComments.Replace("&nbsp;", " ");

                                       strComments = strComments.Replace("<br>", "");

                                   }

                                   strComments = strComments.Replace("<div>&nbsp;</div>", "</br>");

                               }

                               strConstantValue = strConstantValue.Replace("Comments_Value", strComments);*/

                               #region Retrieving Site URL

                               voQuery = new SPQuery();

                               string siteUrl = string.Empty;

                               string finalUrl = string.Empty;

                               voQuery.Query = "<Where><Eq><FieldRef Name='ConstantName'/><Value Type='Text'>SiteHomePage</Value></Eq></Where>";

                               matchingItems = voList.GetItems(voQuery);

                               if (matchingItems.Count > 0)

                               {

                                   voItem = matchingItems[0];

                                   siteUrl = voItem["ConstantValue"].ToString();

                                   if (siteUrl.Contains("<div>") ||

                                       siteUrl.Contains("</div>") ||

                                       siteUrl.Contains("<a>") ||

                                       siteUrl.Contains("</a>") ||

                                       siteUrl.Contains("&nbsp;") ||

                                       siteUrl.Contains("<br>"))

                                   {

                                       siteUrl = siteUrl.Replace("<div>", string.Empty);

                                       siteUrl = siteUrl.Replace("</div>", string.Empty);

                                       //siteUrl = siteUrl.Replace("<a>", "");

                                       //siteUrl = siteUrl.Replace("</a>", "");

                                       siteUrl = siteUrl.Replace("&nbsp;", " ");

                                       siteUrl = siteUrl.Replace("<br>", string.Empty);

                                   }

                               }

                               #endregion

                               if (siteUrl.ToLower().Contains("class=externalclass"))

                               {

                                   //do left trim - remove the </div> class=externalclss till end

                                   siteUrl = siteUrl.Trim().Substring(siteUrl.IndexOf('>') + 1);

                                   //siteUrl = siteUrl.Substring(0, siteUrl.Length - 6);

                                   //do right trim  - remove the </div> in the end

                               }

                               finalUrl = "<A href='" + siteUrl + "'>" + siteUrl + "</A>";

                               strConstantValue = strConstantValue.Replace("URL", finalUrl);

                               if (strConstantType != "Body")

                               {

                                   if (strConstantValue.ToLower().Contains("class=externalclass"))

                                   {

                                       //do left trim - remove the </div> class=externalclss till end

                                       strConstantValue = strConstantValue.Trim().Substring(strConstantValue.IndexOf('>') + 1);

                                       //strConstantValue = strConstantValue.Substring(0, strConstantValue.Length - 6);

                                       //do right trim  - remove the </div> in the end

                                   }

                               }

                           }

                       }

                       return strConstantValue;

                   }

               }

           }

           catch (Exception ex)

           {

               strWriteLogFile += "\n Message:-" + ex.Message + " Stack Trace: " + ex.StackTrace; ;

               WriteTestFile(strWriteLogFile);

               throw ex;

           }

       }

Jagdish wrote re: SharePoint Error - 0x80020009 (DISP_E_EXCEPTION)
on 04-15-2009 11:07 AM

I was disposing SPWeb object in web part which I was getting from CONTEXT,

I stopped disposing the object, and its working fine now.

georgebonney wrote re: SharePoint Error - 0x80020009 (DISP_E_EXCEPTION)
on 04-21-2009 7:35 AM

Hi Jagdish,

You must be very careful not to dispose of an object created by something outside your own code.  This can only be done where you know that you are the effective owner of an object... e.g. where an object is created for you in a method and passed back.  It is essential that you don't dispose of context objects as you have now discovered...

All the best,

George.

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Need SharePoint Training? Attend a SharePoint Bootcamp!
Posts (c) their respective authors. Everything else (c) 2009 SharePoint Experts, Inc.