首页 新闻 会员 周边

ASP.NET Core Minimal API 如何通过 Response.Body 以 Stream 响应 xml 内容

0
悬赏园豆:30 [已解决问题] 解决于 2024-01-28 21:25

问题如题,应用场景是生成网站的 sitemap,请问如何实现?

dudu的主页 dudu | 高人七级 | 园豆:30948
提问于:2024-01-28 12:04
< >
分享
最佳答案
0

用下面的代码实现了

public static class SitemapEndpoint
{
    public const string MapPath = "/sitemap";
    public const string ContentType = "text/xml; charset=utf-8";

    public static void MapSitemapEndpoint(this IEndpointRouteBuilder app)
    {
        app.MapGet(MapPath, ProduceSitemapAsync);
    }

    private static async Task ProduceSitemapAsync(HttpContext context, IBlogQueryService blogQueryService)
    {
        context.Response.ContentType = ContentType;
        await using var xml = XmlWriter.Create(context.Response.Body, new XmlWriterSettings { Async = true, Indent = true });
        await xml.WriteStartDocumentAsync();
        await xml.WriteStartElementAsync(null, "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
        await xml.WriteEndElementAsync();
        await xml.WriteEndDocumentAsync();
    }
}
dudu | 高人七级 |园豆:30948 | 2024-01-28 21:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册