1

我遇到了一個長期困擾的問題。這個問題表現在測試環境中,但不在我的開發環境中。從Office客戶端保存時未在contenttype中設置文檔ID

我有一個文檔庫模板。在一個事件處理程序中,我附加了幾個內容類型(它們都從繼承自Document的基本內容類型繼承)。基本內容類型具有自定義文檔模板和在contenttype定義的xmldocuments中定義的事件處理程序。

Doc-ID功能在站點中打開。

將文件上傳到文檔庫時,將按預期方式爲文檔分配文檔ID。但是,從Word保存文件時,doc-ID是空白的。顯然,該值是在該項目上設置的,因爲之後更改該項目的內容類型時,doc-ID會顯示一個數字,指示該文件在第一次保存時已分配。當將contenttype設置回原始值時,Doc-ID將保持顯示在視圖中。

爲了澄清:這不是項目內容類型的ID字段,但是由DOC-ID功能SharePoint 2010中

任何想法,爲什麼這個值未設置創建DOC-ID從Word推廣價值?

回答

0

看來,該解決方案在網站集中的基礎文檔內容類型中撒了謊。當激活文檔ID功能時,事件處理程序將作爲xmldocuments添加到內容類型定義中。創建常規文檔庫時,庫中的內容類型將繼承此內容類型,從而獲取事件接收器的副本。 自定義內容類型的自定義文檔庫沒有從網站集文檔內容類型繼承,而是從基本文檔內容類型(0x0101)繼承,並且沒有獲得事件接收器的副本。 將xmldocuments複製到我的基本內容類型似乎有竅門。

<XmlDocuments> 
     <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events"> 
      <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events"> 
      <Receiver> 
       <Name>Document ID Generator</Name> 
       <Synchronization>Synchronous</Synchronization> 
       <Type>10001</Type> 
       <SequenceNumber>1000</SequenceNumber> 
       <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
       <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class> 
       <Data> 
       </Data> 
       <Filter> 
       </Filter> 
      </Receiver> 
      <Receiver> 
       <Name>Document ID Generator</Name> 
       <Synchronization>Synchronous</Synchronization> 
       <Type>10002</Type> 
       <SequenceNumber>1001</SequenceNumber> 
       <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
       <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class> 
       <Data> 
       </Data> 
       <Filter> 
       </Filter> 
      </Receiver> 
      <Receiver> 
       <Name>Document ID Generator</Name> 
       <Synchronization>Synchronous</Synchronization> 
       <Type>10004</Type> 
       <SequenceNumber>1002</SequenceNumber> 
       <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
       <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class> 
       <Data> 
       </Data> 
       <Filter> 
       </Filter> 
      </Receiver> 
      <Receiver> 
       <Name>Document ID Generator</Name> 
       <Synchronization>Synchronous</Synchronization> 
       <Type>10006</Type> 
       <SequenceNumber>1003</SequenceNumber> 
       <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> 
       <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class> 
       <Data> 
       </Data> 
       <Filter> 
       </Filter> 
      </Receiver> 
      </spe:Receivers> 
     </XmlDocument> 
     </XmlDocuments> 
+0

嗨,我有類似的情況:我有一個CTYPE CT1從頁面CTYPE inherrts,另一CTYPE CT2 CT1從繼承和另外一個 「CT3」 繼承CT2意味着:頁面級> ct1-> ct2-> ct3。我從cksdev中導入了他們的xml,它將以上事件接收器添加到所有ctypes,即ct1,ct2和ct3。我嘗試了所有組合,如刪除EH ROM,添加到所有等。但在所有情況下,我不能得到docid生成的頁面使用ct3製作的頁面,甚至不能在spdesigner中看到頁面佈局的docid屬性(docid功能被激活).. anry help..u可以做.. –

+0

看起來這個功能真的不適合開發人員。最佳路線可能是使用代碼在運行時創建您的內容類型,使用每個庫中的基本文檔ct作爲基礎。 –

相關問題