【问题标题】:Glass Mapper - "The given key was not present in dictionary"Glass Mapper - “字典中不存在给定的键”
【发布时间】:2017-05-07 21:08:16
【问题描述】:

我们正在尝试为我们的 Sitecore 6.6 实例配置 Glass Mapper,但在测试时遇到了这个错误。

[KeyNotFoundException: 给定的密钥不存在于 字典。] System.Collections.Generic.Dictionary`2.get_Item(TKey key) +13763207 Glass.Mapper.AbstractService..ctor(字符串上下文名称)+99 Glass.Mapper.Sc.SitecoreService..ctor(数据库数据库,字符串上下文名称)+55 Glass.Mapper.Sc.SitecoreContext..ctor() +98 [子布局].Page_Load(Object sender, EventArgs e) in [Sublayout].ascx.cs:18 System.Web.UI.Control.OnLoad(EventArgs e) +109 System.Web.UI.Control.LoadRecursive() +68 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Control.LoadRecursive() +165 System.Web.UI.Page.ProcessRequestMain(布尔型 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +4498

调用它的代码是

protected void Page_Load(object sender, EventArgs e)
    {
        var context = new SitecoreContext();
        Model = context.GetCurrentItem<Article>();
    }

Version 3.3.1.53 已安装(因为我们在 4.x 版本上的 Sitecore 版本存在问题)

【问题讨论】:

    标签: sitecore sitecore6 glass-mapper


    【解决方案1】:

    这可能在上下文未正确加载时发生。

    确保您部署了 Glass 附带的所有配置,例如:

    Website\App_Config\Include\Glass.Mapper.Sc.CastleWindsor.config
    

    还要确保您复制了 Glass 安装附带的所有 .dll。

    【讨论】:

    • 是的,该文件似乎确实丢失了。是否有任何原因导致 nuget 安装失败?
    • Castle Windsor 已从 GlassMapper v4 中删除,正如您所说,您使用的是 3.3.1.53 版本,它应该从 nuget install 中获取。不知道那里发生了什么。
    • 问题是由于安装了 Glass.Mapper.Sc 包而不是 Glass.Mapper.Sc.CastleWindsor,后者已被弃用,但它是唯一具有开箱即用 DI 设置的 Glass适用于 Sitecore 6.6。
    • FWIW;包可以在这里找到:nuget.org/packages/Glass.Mapper.Sc.CastleWindsor
    猜你喜欢
    • 2012-02-18
    • 2023-03-07
    • 2016-08-14
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多