cms.dll中出现“System.ArgumentException”类型的异常,但未在用户代码中处理

时间:2014-03-03 19:39:39

标签: c# umbraco asp.net-4.0

尝试访问我网站上的某个页面,得到一个空白的屏幕并决定再次尝试加载Visual Studio 2012并进行调试,现在我在页面加载时出现此错误:

An exception of type 'System.ArgumentException' occurred in cms.dll but was not handled in user code并指向HeaderControl.ascx.cs中的以下代码:

else if(new umbraco.cms.businesslogic.template.Template((Context.GetContent()).template).Alias == "TemplateLanguage")

此代码位于以下方法中:

public void LoadData()
{
    _Location = HttpContext.Current.GetLocation();

    if (Context.GetContent().NodeTypeAlias == "Home")
    {
        TheHomeHeaderPH.Visible = true;
        ThePhonePH.Visible      = true;
        _MenuStyle = "var-nav nav-large";
        LoadMenuTopControl();
        LoadMenuMainControl();
    }  
    else if(new umbraco.cms.businesslogic.template.Template((Context.GetContent()).template).Alias == "TemplateLanguage") 
    {
        TheContentHeaderPH.Visible = true;
        _MenuStyle              = "nav-small";
        LoadContentMenuTopControl();
        LoadMenuLanguageControl();
    }
    else
    {
        MMG.BusinessLayer.Content theContent = MMG.BusinessLayer.Content.GetCached(Context.GetContent());

        if (theContent.TemplateColor == "168C9C")
        {
            TheHomeHeaderPH.Visible = true;
            _MenuStyle = "nav-small";
            LoadMenuTopControl();
            LoadMenuMainControl();
        }
        else
        {
            TheContentHeaderPH.Visible = true;
            LoadContentMenuTopControl();
            LoadContentMenuMainControl();
        }
    }
}

如何解决此问题? System.ArgumentException说:{"No node exists with id '0'"}

1 个答案:

答案 0 :(得分:1)

我猜这是(Context.GetContent()).template以某种方式打破,我认为GetContent是一种自定义扩展方法。

异常{"No node exists with id '0'"}通常意味着您无法获取所请求的节点。

而是尝试

else if(new umbraco.cms.businesslogic.template.Template(umbraco.uQuery.GetCurrentNode().template).Alias == "TemplateLanguage")

如果这不起作用,则意味着您在CurrentNode不可用的上下文中运行代码。在这种情况下,您必须使用nodeId参数扩展LoadData方法。