RSS удаленные записи все еще отображаются в программе чтения asp.net после удаления из Tumblr - PullRequest
0 голосов
/ 06 мая 2018

Я успешно создал программу чтения RSS-каналов ASP.NET, которую я использую с Tumblr для веб-сайта. Это работает в том, что он захватывает последние 3 сообщения. У меня есть 6 постов для тестирования, и я удалил 3, но мой читатель не показывает три оригинальных поста. Он продолжает показывать последние 3, которые были удалены. Я поместил RSS в браузер для Tumblr, и он отображается правильно, но мой читатель продолжает показывать три сообщения, которые были удалены. Я попытался очистить кеш и сменить браузер, но все равно получаю удаленные сообщения в своем фиде. Вот код, который я использую ниже:

Код внешнего интерфейса:

<asp:GridView ID="gvRssLI" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>

                <div>
                    <h3><%#Eval("Title") %></h3>
                </div>
                <div>
                    <%#Eval("PublishDate" , "{0:d}") %>
                </div>
                <div>&nbsp</div>

                <div align="right">
                    <a href='<%#Eval("Link") %>' target="_blank">Read More...</a>
                </div>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Код-код:

private void PopulateRssFeed()
{
    string rssFeedUrl = ConfigurationManager.AppSettings["RssFeedUrl"];
    List<Feeds> feeds = new List<Feeds>();
    XDocument xDoc = XDocument.Load(rssFeedUrl);
    var items = (from x in xDoc.Descendants("item").Take(3)
                 select new
                 {
                     title = x.Element("title").Value,
                     link = x.Element("link").Value,
                     pubDate = x.Element("pubDate").Value,
                 });
    if (items != null)
    {
        feeds.AddRange(items.Select(i => new Feeds
        {
            Title = i.title,
            Link = i.link,
            PublishDate = i.pubDate,
        }));
    }

    gvRssLI.DataSource = feeds;
    gvRssLI.AutoGenerateColumns = false;
    gvRssLI.DataBind();
}

1 Ответ

0 голосов
/ 09 мая 2018

Я проверил ваш код, и он работает. Фид отображается правильно. Кажется, у Tumblr много времени кеширования. Но, как вы говорите, по этому вопросу можно найти очень мало информации, единственным полезным намеком был этот URL.

https://twitter.com/fromedome/status/237250951889698816

Но знаете ли вы, что вы можете создавать строго типизированные GridViews? Вы можете использовать ItemType в GridView, а затем у вас есть доступ к свойствам класса с помощью Item. Это помогает с безопасностью типов, поскольку Item уже является правильным типом данных. Вы должны изменить YourNameSpace.Feeds на свое правильное пространство имен.

<asp:GridView ID="gvRssLI" runat="server" ItemType="YourNameSpace.Feeds">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>

                <div>
                    <h3><%# Item.Title %></h3>
                </div>
                <div>
                    <%# Item.PublishDate.ToLongDateString() %>
                </div>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Примечание: вы также можете использовать выделенную библиотеку для чтения RSS-каналов, например https://github.com/codehollow/FeedReader

...