与Huffington邮局网站的System.NullReferenceException

时间:2012-11-14 01:07:32

标签: asp.net razor

我正在使用asp.net Webmatrix-Razor。我也在使用HTMLAgilityPack。我正在解析元标记以从网站获取Facebook元标记以发布到我的网站。该代码适用于所有网站,除非我尝试从赫芬顿邮报获取新闻文章。我得到“System.NullReferenceException:对象引用没有设置为对象的实例。”错误发生在select new的行上。该网站确实有Facebook元标记。我听说这个元标记可能会导致问题不确定。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >

这是代码;

    var webGet = new HtmlWeb();   
    var document = webGet.Load(Request.Form["news_URL"]);
    var metaTags = document.DocumentNode.SelectNodes(".//meta");
    if (metaTags != null){
        var metaOnPage = from lnks in document.DocumentNode.Descendants()
                where lnks.Name == "meta" && 
                lnks.Attributes["property"] != null
                //lnks.InnerText.Trim().Length > 0
                select new
                {
                metaName = lnks.Attributes["property"].Value,
                metaContent = lnks.Attributes["content"].Value
                };

        var Title = "";
        var URL = "";
        var imgSRC = "";
        var Description = "";
        foreach(var i in metaOnPage){

        if(i.metaName == "og:title"){
            Title = i.metaContent;
        }else if(i.metaName == "og:url"){
            URL = i.metaContent;
        }else if(i.metaName == "og:image"){
            imgSRC = i.metaContent;
        }else if(i.metaName == "og:description"){
            Description = i.metaContent;
        }

    }

1 个答案:

答案 0 :(得分:2)

似乎这个表达式可能是问题所在:lnks.Attributes["content"].Value。您已检查“属性”是否存在,但不是“内容”。也许您想要添加支票,因为您的代码似乎假设内容包含某些内容:

lnks.Attributes["property"] != null && lnks.Attributes["content"] != null