使用FileResult创建RSS/Atom提要



我尝试为我的ASP创建一个RSS提要。NET MVC 5网站。我创建了一些类来创建带有XmlSerializer的XML。我在一个特殊的Result类中使用这个序列化器,该类派生自FileResult:

public class RssResult : FileResult
{
    public RssResult() : base( "application/rss+xml") { }
    protected override void WriteFile(HttpResponseBase response)
    {
        var seri = new XmlSerializer(typeof(RssFeed));
        seri.Serialize(response.OutputStream, this.Feed);
    }
    public RssFeed Feed { get; set; }
}

然后我为Controller写了一个扩展方法:

public static RssResult RssFeed(this Controller controller, RssFeed feed, string FileDownloadName = "feed.rss")
{
    return new RssResult()
    {
        Feed = feed,
        FileDownloadName = FileDownloadName
    };
}

如果我调用一个返回RssResult的操作,Firefox和Internet Explorer要求我下载该文件。但是我想看到浏览器的典型读者界面。

我在这里分别做错了什么,我必须改变什么?

FileResult添加了一个content-disposition标题,提示浏览器中的"下载"。

如果你有你的数据序列化,只需返回content-type(例如application/xml或你已经有(application/rss+xml)…所以要么返回Content,要么从ActionResult派生

请参阅MvcContrib中的XMLResult示例-注意它派生自ActionResult(而不是FileResult)

Hth…

最新更新