2016-10-02 2 views
0

저는 Atom 피드를 생성하기 위해 SyndicationFeed을 사용하고 있습니다.SyndicationFeed가 rel = "self"속성을 추가하지 않았습니다.

W3C Feed Validation Service을 사용하여 피드를 검증 할 때를 제외하고 모든 기능이 작동하는 것 같습니다. 다음과 같은 경고 메시지가 표시됩니다.

이 피드는 유효하지만 다음 권장 사항을 구현하면 가장 광범위한 피드 리더와의 상호 운용성을 향상시킬 수 있습니다. 2 행, 열 0 : 누락 된 원자 : REL = "자기"그것은 내가 만든 태그에 속성을 추가 할 수있을만큼 쉽게

와 링크,하지만 난 SyndicationFeed을 얻을 수있는 방법을 추가? 나는 이것에 대한 설정을 보지 않고있다.

다음은 내 피드의 첫 번째 부분입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"> 
    <title type="text">Insider Articles</title> 
    <subtitle type="text">Insider Articles data feed.</subtitle> 
    <id>http://www.insiderarticles.com/Syndication/Atom</id> 
    <rights type="text">Copyright (c) 2016 Insider Articles. All Rights Reserved.</rights> 
    <updated>2016-10-02T12:47:21-07:00</updated> 
    <logo>http://www.insiderarticles.com/Content/Images/rss.jpg</logo> 
    <link rel="alternate" href="http://www.insiderarticles.com/" /> 
    <entry> 
    <!-- Etc... --> 

다음은 내가 피드 (피드 항목 제외)를 구성하는 방법입니다. 내 코드는 위의 대체 링크 (rel="alternate")을 추가했지만

// Construct feed 
SyndicationFeed feed = new SyndicationFeed(
    Properties.Settings.Default.ApplicationName, 
    Properties.Settings.Default.FeedSummary, 
    new Uri(Properties.Settings.Default.ApplicationDomainRoot), 
    string.Format("{0}/Syndication/Atom", Properties.Settings.Default.ApplicationDomainRoot), 
     DateTime.Now); 
    feed.Language = "en-us"; 
    feed.Copyright = new TextSyndicationContent(Properties.Settings.Default.ApplicationCopyright); 
    feed.ImageUrl = new Uri(string.Format("{0}/Content/Images/rss.jpg", uriRoot)); 
    feed.Items = items; 

답변

0

은 발리는 또한 원래 피드 링크뿐만 아니라 (rel="self")를 원한다.

다음 코드를 추가하면 문제가 해결됩니다.

string feedUrl = string.Format("{0}/Syndication/Atom", UrlBuilder.GetUriRoot(uri)); 

// Add feed (self) URL 
var link = new SyndicationLink(new Uri(feedUrl)); 
link.RelationshipType = "self"; 
feed.Links.Add(link); 
관련 문제