我只有一个具有许多属性的成员类型,我从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。 之后将需要应用程序池回收。
答案 0 :(得分:0)
更新 - 所以我尝试运行该链接中指定的SQL脚本来修复多节点树选取器。然而,它对我来说并不起作用,似乎让我的成员失望......这很糟糕。幸运的是备份存在,我将备份版本交换到位。
我将问题追溯到几种使用多节点树拾取器的数据类型,但没有正确加载(这些被指定为成员类型的通用属性)。
更新2(解决方案):通过将成员类型中的属性从已损坏的数据类型(我删除)更改为标签/文本字符串来解决此问题。 SQL也没有删除我的成员,删除我的成员类型,然后重新创建它以追查问题,删除了该类型的所有成员。