SharePoint【调试,诊错系列】-- 在当前站点集或子网站中找到功能 {GUID} 中定义的 ID 为 0x0100GUID的内容类型
问题描述:
在测试环境上部署了一个包含ContentType的解决方案,VS2010修改内容后想重新部署,死活部署不上去了:
错误日志内容如下:
SPException thrown: Message: 在当前站点集或子网站中找到功能 {b7edbfe2-c02e-4560-b314-b23c7b049d10} 中定义的 ID 为 0x0100983A544EBE5040C28C797562907C29F2 的内容类型。. Stack: 在 Microsoft.SharePoint.Utilities.SPUtility.ThrowSPExceptionWithTraceTag(UInt32 tagId, ULSCat traceCategory, String resourceId, Object[] resourceArgs) 在 Microsoft.SharePoint.Administration.SPElementDefinitionCollection.ProvisionFieldsAndContentTypes
查了资料说是需要加入Overwrite=”True”,测试后发现如果首次部署的时候就加入Overwrite,那么后面的就没问题。
但是这个只针对最开始就加的有效,如果是报错后再加入,激活时会报的错误更恶心:
部署步骤“激活功能”中出现错误:
这位同志跟我遇到了同样的问题:http://www.go4answers.com/Example/missing-content-types-central-128297.aspx
解决方案:
最后结合以下两篇文章解决问题:
操作如下:
1.SQL查找到之前部署过的ContentType
SELECT [SiteId]
,[Class]
,[Scope]
,sys.fn_varbintohexstr([ContentTypeId]) as CT
,[Version]
,[NextChildByte]
,[Size]
,[Definition]
,[ResourceDir]
,[IsFromFeature]
FROM [WSS_Content].[dbo].[ContentTypes]
where (sys.fn_varbintohexstr(ContentTypeId) LIKE '0x0100983a544ebe5040c28c797562907c29f2%')