从Tumblr中删除后,RSS删除的条目仍显示在asp.net reader中

从Tumblr中删除后,RSS删除的条目仍显示在asp.net reader中,asp.net,webforms,rss,rss-reader,Asp.net,Webforms,Rss,Rss Reader,我已经成功地创建了一个ASP.NET RSS提要阅读器,我正在将它与Tumblr一起用于一个网站。它的工作原理在于它抓住了最近的3个帖子。我有6篇文章要测试,我删除了3篇,但我的读者没有显示原来的3篇文章。它一直显示最近删除的3个。我已经将RSS放在Tumblr的浏览器中,它显示正确,但我的阅读器一直显示被删除的三篇文章。我试图清除缓存并更改浏览器,但我仍然在订阅源中收到已删除的帖子。下面是我正在使用的代码: 前端代码: <asp:GridView ID="gvRssLI" runat="

我已经成功地创建了一个ASP.NET RSS提要阅读器,我正在将它与Tumblr一起用于一个网站。它的工作原理在于它抓住了最近的3个帖子。我有6篇文章要测试,我删除了3篇,但我的读者没有显示原来的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();
}

代码背后的代码:

<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();
}
private void PopulateRssFeed()
{
字符串rssFeedUrl=ConfigurationManager.AppSettings[“rssFeedUrl”];
列表提要=新列表();
XDocument xDoc=XDocument.Load(rssFeedUrl);
var items=(从xDoc.subjects(“item”)中的x开始)。取(3)
选择新的
{
title=x.元素(“title”).值,
link=x.元素(“link”).值,
pubDate=x.Element(“pubDate”).值,
});
如果(项!=null)
{
feeds.AddRange(items.Select(i=>newfeeds
{
Title=i.Title,
Link=i.Link,
PublishDate=i.PublishDate,
}));
}
gvRssLI.DataSource=提要;
gvRssLI.AutoGenerateColumns=false;
gvRssLI.DataBind();
}

我测试了你的代码,它运行正常。提要显示正确。Tumblr的缓存时间似乎很长。但是正如你所说,关于这个主题的信息很少,唯一有用的提示就是这个url

但是你知道你可以创建强类型的GridView吗?您可以在GridView中使用
ItemType
,然后通过
Item
访问类属性。这有助于类型安全,因为
已经是正确的数据类型。您必须修改
YourNameSpace.feed
到正确的名称空间

<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>

我认为没有足够的信息给出有用的答案。是否在会话或视图状态中缓存提要?url中是否有可能是原因的参数?您在何时何地调用
PopulateRssFeed()
?Tumblr中是否有缓存(从未使用过,所以我不知道)?不,我没有缓存提要。它直接来自我网络配置中的URL。该URL是浏览器仅显示三个结果的URL。但是如果你把相同的URL放在XML解析器中,或者使用我这里的代码,它仍然会显示应该删除的三篇文章。正如预期的那样,我只看到3篇文章(“博客文章3”、“博客文章2”和“为什么内容是互联网之王”),Tumblr提要必须花费几天时间才能显示直接在博客上制作的RSS提要的更新。我只是重新测试并删除了两篇有“Blog”的帖子,看看我是否会留下一篇帖子,而这三篇帖子都会显示出来。Tumblr站点必须将结果缓存好几天,但我还没有在任何地方读到这篇文章。你帮我调查了这个问题。如果你发布某种类型的答案,我会接受它,这样你就可以获得帮助我调查此事的荣誉。