SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Eigener Content Type deployed - jetzt "System.NullReferenceException"

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
367 Beiträge
Christian Merkel erstellt 13 Feb. 2012 09:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi

 

Ich hab 2 eigene Content-Types deployd.

Der eine ist ein Dokumenten-Content-Type, wlecher vom standard 0x0101 erbt.

Der zweite ist ein Document-Set welches verschiedene eigene Felder definiert hat und welches

  1. ein bestimmtes defaultDocument beinhaltet (vom Content-Type den ich selber erstellt habe)
  2. nur 2 bestimmte Content-Types erlaubt (0x0101 und meinen eigenen)

Ich kann alles machen. Ein neues Dokumenten-Set anlegen in einer Bibliothek welche meinen COntent-Type nutzt. Klapp. Nur das mein DefaultDocument nicht mit angelegt wird.

und:

Ich kann unter "Site Content Type Information" meiner Dokumenten-Mappe  nicht den Link zu "Document Set settings" aufrufen. Dabei erhalte ich immer einen Fehler:

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]
   Microsoft.Office.DocumentManagement.DocumentSets.AllowedContentTypeCollection.FetchCollection() +383
   Microsoft.Office.DocumentManagement.DocumentSets.AllowedContentTypeCollection.GetEnumerator() +24
   Microsoft.Office.DocumentManagement.Pages.DocSetSettings.OnLoadAllowedContentTypes() +1254
   Microsoft.Office.DocumentManagement.Pages.DocSetSettings.OnInit(EventArgs e) +1771
   System.Web.UI.Control.InitRecursive(Control namingContainer) +142
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1476

Was ist da schief gelaufen? Anbei noch die wichtigen Ausschnitte aus der Elements der Dokumenten-Mappe:

      <XmlDocument NamespaceURI="http://schemas.microsoft.com/office/documentsets/defaultdocuments">
          <DefaultDocuments xmlns="http://schemas.microsoft.com/office/documentsets/defaultdocuments" LastModified="11/29/2010 17:06:58" AddSetName="">
            <DefaultDocument name="StandardDoc.docx" idContentType="0x0101009ec52ae3d08f416d9440c97cd9589999" />
          </DefaultDocuments>
      </XmlDocument>     

<XmlDocument NamespaceURI="http://schemas.microsoft.com/office/documentsets/allowedcontenttypes">
        <act:AllowedContentTypes xmlns:act="http://schemas.microsoft.com/office/documentsets/allowedcontenttypes" LastModified="04/30/2011 00:47:45">
          <AllowedContentType id="0x0101"/>
          <!--<AllowedContentType id="0x01010A"/>-->
          <AllowedContentType id="0x0101009ec52ae3d08f416d9440c97cd9589999" />
        </act:AllowedContentTypes>
      </XmlDocument>

Danke für eure Hilfe :D

Alle Antworten

Ohne Rang
96 Beiträge
Stefan Walter Als Antwort am 14 Feb. 2012 00:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo!

Meiner Erfahrung nach sind solche Dinge immer recht schwer zu lokalisieren. Da du "deployed" schreibst nehme ich an, es ist eine selbst erstellte Solution? Wenn dem so ist kann ich gerne mal einen Blick darauf werfen bzw. das Ganze in einer meiner VMs testen.

Lg,
Stefan

 

www.stefan-walter.net
SharePoint MCITP, MCPD, MCTS, MOS

 

Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 14 Feb. 2012 10:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, eigene Solution.

Und nein, kann es leider nicht weitergeben :(

Das Probelm was ich habe ist, das in einer Solution 2 Content-Types und ein Modul ausgerollt werden.

Das Modul stellt dabei das "default document" sowie die DocSetHomepage bereit.

Bei den Content-Types werden bei dem Docuemnt-Set die Felder definiert und die referenzen im doc-set gesetzt. und als allowed content-type wird der doctype genutzt. Dieser Content-Type nutzt auch die Referenzen der Doc-Set-Felder.

ich weis nicht ob so eine Verstrickung normal / möglich / praktikabel ist?

Ich kann ja versuchen den Code so hinzubiegen, das ich dir den bereitstellen kann.

Die content-type id's habe ich geprüft. scheint soweit alles i.O.

 

Hier mal die Definitionen der zwei Content-Types (Field definition + referenzen extra weggelassen):

Document-Set:

  <ContentType ID="0x0120D520000b200345467d4124ab4ad2499d16e999"
               Name="TestDokumentmappe"
               Group="Company.DocSet"
               Description="ContentTypes TestDocumentset"
               Version="0" ProgId="SharePoint.DocumentSet" PushDownChangedResourceFilesOnly="TRUE"  Overwrite="TRUE">

      <XmlDocument NamespaceURI="http://schemas.microsoft.com/office/documentsets/defaultdocuments">
          <DefaultDocuments xmlns="http://schemas.microsoft.com/office/documentsets/defaultdocuments" LastModified="11/29/2010 17:06:58" AddSetName="">
            <DefaultDocument name="Vorlage.docx" idContentType="0x0101009EC52AE3D08F416D9440C97CD9581234" />
          </DefaultDocuments>
      </XmlDocument>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/office/documentsets/allowedcontenttypes">
        <act:AllowedContentTypes xmlns:act="http://schemas.microsoft.com/office/documentsets/allowedcontenttypes" LastModified="04/30/2011 00:47:45">
          <AllowedContentType id="0x0101"/>
          <!--<AllowedContentType id="0x01010A"/>-->
          <AllowedContentType id="0x0101009EC52AE3D08F416D9440C97CD9581234" />
        </act:AllowedContentTypes>
      </XmlDocument>

Document:

  <ContentType ID="0x0101009EC52AE3D08F416D9440C97CD9581234"
               Name="TestDocument"
               Group="Company.Docset"
               Description="Company.Documents.TestDocument"
               Inherits="TRUE"
               Version="0" > 

 

Modul:

<Module Name="ModulDokumentmappe" Url="_cts/TestDokumentmappe" Path="ModulDokumentmappe">
<File Path="Vorlage.docx" Url="Vorlage.docx"  IgnoreIfAlreadyExists="TRUE"  Type="Ghostable"/>
</Module>

bei manchen Parametern bin ich mir nciht 100% sicher ob man die setzen sollte oder nicht. z.B: bei dem Modul das File... Ghostable? Ignor?

Bei den Content-Type: Overwrite?

Welche brauch ich um sicherzustellen das bei jedem deploy die aktuellen daten drübergebügelt werden?

Muss ich bei dem default-Dokument noch den Pfad "ModulDokumentmappe" mit anhängen?

 

Danke für die hilfe!

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Feb. 2012 11:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="ragesoft"]bei manchen Parametern bin ich mir nciht 100% sicher ob man die setzen sollte oder nicht. z.B: bei dem Modul das File... Ghostable? [/quote]

Dann lasse sie weg und probiere es aus. Mangels ordentlicher Doku bleibt oft nichts anderes übrig :-(

Das Ghostable würde ich in jedem Fall weglassen und dafür IgnoreIfAlreadyExists auf false setzen - Du möchtest es ja beim Deploy überschreiben.

Dein eigentliches Problem ist aber der Pfad. Du stellst die Vorlage als ~site/_cts/TestDokumentenmappe/Vorlage.docx bereit. Der Inhaltstyp liegt aber unter ~site/_cts/TestDocument und erwartet die Vorlage auch dort.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 14 Feb. 2012 11:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es ist keine Vorlage für den Content-Type Document sondern es ist eine Datei die standardmässig in jedem neu angelegten Document-Set enthalten sein soll (vom Type des eigenen Content-Types).

Und das mit dem Ignore is auch so ne sache. Man liest da irgendwie unterschiedliches. Ich denk es liegt an der mangelnden Übersetzung mancher Dokumentationen.

Danke erstmal für den Tipp.

Ein Kollege hat mir noch weiter geholfen. Scheinbar mag SharePoint keine Kommentare innerhalb der XmlDocuments-Tags :)

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Feb. 2012 11:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="ragesoft"]Scheinbar mag SharePoint keine Kommentare innerhalb der XmlDocuments-Tags [/quote]

Das habe ich völlig übersehen, aber es stimmt. An vielen Stellen dürfen keine Kommentare vorkommen. An anderen Stellen ist es völlig egal. Und natürlich steht nirgendwo, wann es sich wie verhält...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 14 Feb. 2012 14:42
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es scheint wirklich an den blöden Kommentaren innerhalb des XMLDocs gelegen zu haben.

Jetzt geht alles wunderbar. Auch das Updaten der default documents...

Danke nochmal für die schnellen Antworten!

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING