无法检索空成员项类型的数据

时间:2014-10-07 14:37:36

标签: asp.net azure umbraco member umbraco7

我只有一个具有许多属性的成员类型,我从Umbraco 6.2.1升级到7.1.6。

当我右键点击并创建一个新的会员时,经销商登录用户"我收到此错误:

Server error: Contact administrator, see log for full details.
Failed to retrieve data for empty member item type DealerLoginUser

当我点击任何现有成员时,我收到此错误:

Server error: Contact administrator, see log for full details.
Failed to retrieve data for member id ac15863825084e1cb1e9e620b3a1a872

我在Azure上挖掘了日志,它给了我一个500错误,这就是我发现的:

Buffer=")]}',
{"Message":"An error has occurred.","ExceptionMessage":"The given key was not present in the dictionary.","ExceptionType":"System.Collections.Generic.KeyNotFoundException","StackTrace":"   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)\r\n   at Umbraco.Web.PropertyEditors.MultiNodeTreePickerPropertyEditor.MultiNodePickerPreValueEditor.ConvertDbToEditor(IDictionary`2 defaultPreVals, PreValueCollection persistedPreVals)\r\n   at Umbraco.Web.Models.Mapping.ContentPropertyDisplayConverter.ConvertCore(Property originalProp)\r\n   at AutoMapper.TypeConverter`2.Convert(ResolutionContext context)\r\n   at AutoMapper.MappingExpression`2.<>c__DisplayClass15.<ConvertUsing>b__14(ResolutionContext context)\r\n   at AutoMapper.Mappers.TypeMapObjectMapperRegistry.CustomMapperStrategy.Map(ResolutionContext context, IMappingEngineRunner mapper)\r\n   at AutoMapper.Mappers.TypeMapMapper.Map(ResolutionContext context, IMappingEngineRunner mapper)\r\n   at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)"}"

我发现&#34; MultiNodeTreePicker&#34;有错误。这里也引用了http://our.umbraco.org/forum/getting-started/installing-umbraco/54018-Upgrading-621-to-714-Failed-to-retrieve-data-for-data-type-error-for-MNTP

该帖子有一个我可以运行的SQL脚本:

    -- This script should be run after Umbraco install script

USE DatabaseName-- specify database
GO

DECLARE @datatypeIds TABLE (id int);

INSERT INTO @datatypeIds
SELECT  nodeId 
FROM    cmsDataType 
WHERE   propertyEditorAlias = 'Umbraco.MultiNodeTreePicker'

DELETE FROM cmsDataTypePreValues
WHERE datatypeNodeId IN (SELECT id FROM @datatypeIds);

INSERT INTO cmsDataTypePreValues
SELECT
    [@datatypeIds].id,
    1,  
    1,
    'maxNumber'
FROM
@datatypeIds;

SELECT     *
FROM       cmsDataTypePreValues
WHERE     datatypeNodeId IN (SELECT id FROM @datatypeIds)
GO

但我不确定它是否能解决我的问题? 我也不确定那张海报的含义是什么

  

请注意,这将删除指定数据类型的所有prevalues。   之后将需要应用程序池回收。

1 个答案:

答案 0 :(得分:0)

更新 - 所以我尝试运行该链接中指定的SQL脚本来修复多节点树选取器。然而,它对我来说并不起作用,似乎让我的成员失望......这很糟糕。幸运的是备份存在,我将备份版本交换到位。

我将问题追溯到几种使用多节点树拾取器的数据类型,但没有正确加载(这些被指定为成员类型的通用属性)。

更新2(解决方案):通过将成员类型中的属性从已损坏的数据类型(我删除)更改为标签/文本字符串来解决此问题。 SQL也没有删除我的成员,删除我的成员类型,然后重新创建它以追查问题,删除了该类型的所有成员。