2010-09-13 29 views
1

J'ai remarqué que les propriétés personnalisées d'un composant WebPart que j'ai développé retournent à leurs valeurs par défaut lorsque je redémarre mon ordinateur.Les propriétés personnalisées Sharepoint Webpart obtiennent des valeurs par défaut lors du redémarrage du serveur

Est-ce un comportement normal? sont les propriétés enregistrées aussi loin que le serveur est en place, ou il y a quelques paramètres qui me manquent.

Merci.

EDIT: Code:

namespace TestWebpart 
{ 
    [ToolboxItemAttribute(false)] 
    [XmlRoot(Namespace = "TestWebpart")] 
    public class GraphWebpart : Microsoft.SharePoint.WebPartPages.WebPart 
    { 
     // Visual Studio might automatically update this path when you change the Visual Web Part project item. 
     private const string _ascxPath = @"~/_CONTROLTEMPLATES/Test_Graph/TestWebpart/GraphWebpartUserControl.ascx"; 

     protected override void CreateChildControls() 
     { 
      ReloadElements(); 
     } 

     protected void ReloadElements() 
     { 
      Controls.Clear(); 
      GraphWebpartUserControl control = (GraphWebpartUserControl)Page.LoadControl(_ascxPath); 

      control.xmlDataUrl = XMLFileUrl; 

      Controls.Add(control); 
     } 

     private static string _xmlFileUrl; 
     [WebBrowsable(true), 
     Personalizable(PersonalizationScope.Shared), 
     DefaultValue(""), 
     Description("xml"), 
     DisplayName("xml"), 
     WebDisplayName("xml")] 
     public string XMLFileUrl 
     { 
      get { return _xmlFileUrl; } 
      set { 
       _xmlFileUrl = value; 
       ReloadElements(); 
      } 
     } 
} 
} 

EDIT2: Suppression statique des champs jette l'exception fluide:

Web Part Error: An error occurred while setting the value of this property: TestWebpart:XMLFileUrl - Exception has been thrown by the target of an invocation. 
Hide Error Details 

[WebPartPageUserException: An error occurred while setting the value of this property: Blue_Graph.GraphWebpart.GraphWebpart:XMLFileUrl - Exception has been thrown by the target of an invocation.] 
    at Microsoft.SharePoint.WebPartPages.BinaryWebPartDeserializer.ApplyPropertyState(Control control) 
    at Microsoft.SharePoint.WebPartPages.BinaryWebPartDeserializer.Deserialize() 
    at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts) 
+0

Ce n'est pas un comportement normal que les propriétés sont conservées dans la base de données. Un exemple de code aide toujours ... –

+0

Eh bien, il n'y a rien de spécial à propos de mon code, voir mise à jour. – 0xFF

+0

Une chose qui me saute aux yeux est la classe dont vous héritez. Consultez les remarques ici - http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.webpart.aspx –

Répondre

2

tout d'abord vous ne devriez pas avoir

private static string _xmlFileUrl; 

il devrait être

private string _xmlFileUrl; 

Cette variable statique sera perdue sur IISRESET - ne fonctionnera pas dans une ferme et a le potentiel de causer toutes sortes de problèmes « thread-safe » si elle est utilisée environnement multi-thread (comme un serveur web) afin only use them if they are really needed. Lorsque SharePoint charge un composant WebPart (ou après avoir cliqué sur Enregistrer/Appliquer dans l'outil), il utilise la réflexion pour trouver vos propriétés (l'attribut [Browsable ...), puis la sérialisation pour charger/enregistrer la valeur de la propriété à la base de données. L'un de ces deux échoue.

Je soupçonne que c'est un problème avec l'attribut - try this one et travailler à rebours jusqu'à ce qu'il cesse de fonctionner;)

[Browsable(true), 
Category("Miscellaneous"), 
DefaultValue(defaultText), 
WebPartStorage(Storage.Personal), 
FriendlyName("Text"), 
Description("Text Property")] 
+0

la suppression statique donne une exception maintenant, s'il vous plaît voir la modification – 0xFF

+0

Comprenez-vous ce que statique est faire (c'est cacher le fait que quelque chose ne va pas dans les attributs et la sérialisation des propriétés ne fonctionne pas) - avez-vous essayé de changer les attributs? – Ryan