c# - cms.dll 中出现 'System.ArgumentException' 类型的异常,但未在用户代码中处理

标签 c# umbraco asp.net-4.0

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

cms.dll 中出现 'System.ArgumentException' 类型的异常,但未在用户代码中处理 并指向 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'"}

最佳答案

我猜是 (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 方法。

关于c# - cms.dll 中出现 'System.ArgumentException' 类型的异常,但未在用户代码中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155746/

相关文章:

caching - IIS7 Web.Config 缓存 - 这里有什么区别,它们是如何结合在一起的?

asp.net-mvc - mvc 下拉列表中的自动回发

c# - 从不同线程访问后释放 BrokeredMessage

Umbraco 按用户类型获取用户

c# - 来自 Stack Overflow 的 MVC 迷你分析器(安装)

c# - 获取数组中的最后一个 child

.net - 使用razor选择 "umbraco item"

javascript - AJAX 上传完成后重新加载页面

c# - 级数计算

c# - Lync 2013 用户可用性