2009-07-02 9 views
2

J'ai créé mon webpart qui fonctionne bien (je peux l'ajouter à la page et l'utiliser). Toutefois, si je veux le déplacer vers une zone différente ou modifier n'importe quel autre composant WebPart sur cette page, j'obtiens une exception.Je peux ajouter mon webpart personnalisé, mais je ne peux pas modifier un webpart sur la page

Des idées sur ce qui pourrait être faux?

Peut-être qu'il doit faire quelque chose avec que mon composant WebPart a une variable de zone null? Cependant webpart affiche bien sur la page. Détails ci-dessous. Edit: Ahh, non, je vois que d'autres parties du web (les originales) ont aussi la variable Zone comme nulle. De toute façon je n'ai aucune idée de comment digg même et découvrir le problème.

Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)) 
Exception Details: Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)) 

Stack Trace:  

[WebPartPageUserException: Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))] 
    Microsoft.SharePoint.WebPartPages.SPWebPartManager.SaveSomeChanges(SPLayoutProperties layoutProperties) +897 
    Microsoft.SharePoint.WebPartPages.WebPart.SaveSomeChanges(SPLayoutProperties layoutProperties) +52 
    Microsoft.SharePoint.WebPartPages.SPWebPartManager.WPSaveSomeChanges(SPLayoutProperties layoutProperties) +83 
    Microsoft.SharePoint.WebPartPages.SPWebPartManager.ApplyChangeList(String changeString) +865 
    Microsoft.SharePoint.WebPartPages.SPWebPartManager.OnLoad(EventArgs e) +398 
    System.Web.UI.Control.LoadRecursive() +50 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 

Répondre

2

Essayez le cas échéant de la solution ci-dessous fonctionne

this ou this ou this

+1

La solution était dans le premier lien. J'utilisais une fonction où je passais l'objet SPWeb comme paramètre et à la fin de celui-ci, j'ai disposé. A commenté web.Dispose() et cela a fonctionné. –

+0

Cool, et le point à retenir est le SPContext.Current.Web n'appartient pas à vous, donc ne jamais le jeter. – Kusek

1

Voici quelques réflexions de dépannage:

Vérifiez les journaux SharePoint

Comme l'exception n'aide pas beaucoup, vous pouvez essayer de vérifier les journaux SharePoint et voir si d'autres erreurs se produisent en même temps qui ne sont pas signalées à l'interface utilisateur. Ceux-ci pourraient donner plus de détails.

débogueur Break sur toutes les exceptions

Si aucune chance, essayez de désactiver Juste Mon code dans Outils/Options/Debugging. Cela garantira que votre code se casse lorsque des erreurs se produisent en dehors de votre composant WebPart. Ensuite, définissez Debug/Exceptions pour vérifier toutes les exceptions CLR afin que les exceptions qui se produisent dans SharePoint rompent avec l'erreur. Enfin, attachez le débogueur Visual Studio à w3wp.exe et accédez à votre page. Sachez que le débogueur interrompra toute exception, même celles qui ne sont pas liées à ce problème. J'espère que cela vous donnera une idée.

Code Commentaire

Si cela ne permet pas de cerner le problème, je commencerais commenter le code de partie Web jusqu'à ce que l'erreur ne se produit plus. Ensuite, décommentez jusqu'à ce que vous atteigniez la ligne précise qui provoque l'erreur. Comme l'exception est dans SaveChanges, c'est quelque chose à voir avec la persistance des propriétés de la partie web. C'est là que je commençais à commenter en premier.

+0

Ce sont des astuces de débogage utiles donc +1 pour vous. Je vous remercie. –

Questions connexes