现在的位置: 首页 > 综合 > 正文

在当前站点集或子网站中找到功能 {GUID} 中定义的 ID 为 0x0100GUID的内容类型

2012年12月08日 ⁄ 综合 ⁄ 共 2514字 ⁄ 字号 评论关闭

问题描述:     

      在测试环境上部署了一个包含ContentType的解决方案,VS2010修改内容后想重新部署,死活部署不上去了:

image

错误日志内容如下:

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,那么后面的就没问题。

image

image

      但是这个只针对最开始就加的有效,如果是报错后再加入,激活时会报的错误更恶心:

部署步骤“激活功能”中出现错误:

image

这位同志跟我遇到了同样的问题: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%')

image

2.修改字段 IsFromFeature 为0

Update [WSS_Content].[dbo].[ContentTypes] 
SET [isfromFeature]= 0
where (sys.fn_varbintohexstr(ContentTypeId) LIKE '0x0100983a544ebe5040c28c797562907c29f2%')

image

3.将不带Overwrite=”True”的解决方案重新部署一遍,这时候会报错,但ContentType已经部署上去了,到网站设置中找到部署的内容类型,删除掉:

image

image

4.再回SQL查询,结果已经为空

image

5.接下来,在VS2010中给ContentType添加Overwrite=”True”后重新部署,以后再部署解决方案应该就不会报错了

image

备注:加入Overwrite=”True”后,数据库表中的Definition字段里面有值,不知道系统是不是就是根据这个来判断是否可重写的

image

抱歉!评论已关闭.