Domanda

Ho appena scritto una nuova web part e ora visualizzo questo errore quando provo a distribuirli sui miei server non dev:

  

lo spazio dei nomi predefinito   " http://schemas.microsoft.com/WebPart/v2 "   è uno spazio dei nomi riservato per il Web di base   Proprietari di parte. Web part personalizzata   le proprietà richiedono uno spazio dei nomi univoco   (specificato tramite un   XmlElementAttribute sulla proprietà,   o un XmlRootAttribute sulla classe).

Sto scrivendo le web part in file CAB e le sto distribuendo con questo:

stsadm -o addwppack -filename web_part_name.CAB -url http://your_url_here -globalinstall -force 

Tutto funziona bene fino a quando non provo ad aggiungere la web part, quindi visualizzo questo errore in un popup. Funziona perfettamente sul mio dev VM ...?

Qualsiasi idea sarebbe apprezzata, grazie.

È stato utile?

Soluzione

Bene, sembra che il tuo file di definizione della webpart sia in qualche modo rotto. La cosa che faccio è mettere la webpart nella pagina e quindi esportarla. Puoi farlo semplicemente aprendo la galleria webpart, che può trovarsi nelle impostazioni del sito della raccolta siti root e aggiungere lì la tua webpart.

Dopodiché basta posizionare la webpart in qualsiasi pagina e utilizzare il pulsante di esportazione nelle impostazioni della webpart. Questo produrrà file .webpart o .dwp a seconda della tua webpart (.webpart è la 'nuova' definizione che viene usata dalle webpart native di MOSS 2007 e .dwp è per le webpart più vecchie, ma dipende da come hai scritto la webpart)

Quindi prendi semplicemente il file esportato e includilo nel tuo progetto. Questo approccio funziona almeno per me.

Altri suggerimenti

Hai impacchettato la tua web part come file .webpart? In questo caso, devi utilizzare il nuovo spazio dei nomi v3. Per usare la v2, devi comprimerlo come file .dwp.

Sì, il file di definizione della web part (* .dwp o * .webpart) probabilmente non è corretto. Pubblicalo qui e dovrebbe essere rapido trovare l'errore.

Un po 'di ipotesi istruite qui ma comunque: -

Prima controlla di avere l'attributo XmlRoot come questo nella tua web part

[XmlRoot(Namespace = "Your.Namespace")]
public class YourWebPart: WebPart
{
...

e attributo XmlElement sulle proprietà personalizzate

    [DefaultValue(0)]
    [WebPartStorage(Storage.Shared)]
    [Browsable(false)]
    [XmlElement(ElementName = "YourProperty")]
    public Int64 YourProperty
    {         
       ...
    }

Questo errore si verifica quando .NET tenta di desterilizzare i dati dal file .DWP e impostare le proprietà personalizzate nella web part.

Sospetto che l'errore possa non avere nulla a che fare con i conflitti dello spazio dei nomi poiché SharePoint a volte tende a ricorrere a messaggi di errore che possono essere un'aringa rossa.

Innanzitutto esaminerei il tuo file .dwp. Hai delle proprietà personalizzate impostate lì, in tal caso rimuoverle e ripetere il test.

Commenta le proprietà personalizzate nel codice della web part una alla volta e riprova ad ogni passaggio.

Penso che scoprirai che uno di questi sta causando il problema - esattamente perché è la prossima domanda!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top