使用Razor页面返回XML?

Lic*_*cht 1 .net c# asp.net-core razor-pages

如何使用Razor Page创建XML(特别是我正在尝试构建sitemap.xml)?

我已经阅读了MSDN Razor Pages简介,但它只展示了如何创建HTML页面.当我只使用在Razor生成动态XML中所示的基本XML时出现问题...

Lic*_*cht 7

添加包含以下内容的新Razor页面.

@page
<?xml version="1.0" encoding="UTF-8" ?>
@{
    Layout = null;
}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @*Include your static urls*@
    <url>
        <loc>https://example.com/my-static-page</loc>
    </url>
    @*Dynamically include pages generated from your database*@
    @foreach(var article in articles)
    {
        <url>
            <loc>https://example.com/article/@article.Url</loc>
            <lastmod>@article.Modified.ToString("yyyy-MM-dd")</lastmod>
        </url>
    }
    @*You get the idea*@
</urlset>
Run Code Online (Sandbox Code Playgroud)

之前的XML声明@{Layout=null;}是必不可少的!否则,XML解析器将无法正常工作,这将一无所获.

额外:要使路径/sitemap.xml正常工作,您需要添加它.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddRazorPagesOptions(options => 
            {
                options.Conventions.AddPageRoute("/Sitemap", "sitemap.xml");
            });
    }
}
Run Code Online (Sandbox Code Playgroud)