1

asp.net Webmatrix-Razor を使用しています。HTMLAgilityPack も使用しています。メタ タグを解析して、Web サイトから Facebook メタ タグを取得して自分のサイトに投稿しています。このコードは、Huffington Post からニュース記事を取得しようとする場合を除いて、すべての Web サイトで機能します。「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;
        }

    }
4

1 に答える 1

2

この表現が問題である可能性が高いようです: lnks.Attributes["content"].Value. 「プロパティ」が存在することを確認しましたが、「コンテンツ」は存在しません。コードはコンテンツに何かが含まれていると想定しているように見えるため、チェックを追加することをお勧めします。

lnks.Attributes["property"] != null && lnks.Attributes["content"] != null
于 2012-11-14T01:14:17.097 に答える