在.NET Web应用程序中生成的XML文件可在本地工作,但在生产中内容为空

xlpyo6sf  于 2023-01-10  发布在  .NET
关注(0)|答案(1)|浏览(132)
    • bounty将在6天后过期**。回答此问题可获得+250声望奖励。Lars Holdgaard希望引起更多人关注此问题。

我有一个. NET 7 Web应用程序,其中有一个控制器,它会生成一个sitemap.xml文件。当我在本地运行该应用程序时,我会得到一个XML文件,其中包含以下内容:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"/>

它看起来像这样:

但是,当将其推送到生产环境时(所有内容都作为Web应用托管在Azure上),同一端点将不返回任何内容。它会识别该端点,如下所示:

我的代码生成这个,如下所示:

[Route("/sitemap.xml")]
    public async Task SitemapXml()
    {
        var countries = await _countryService.GetBySpecificationAsync(new CountrySpecification()
        {
            Take = int.MaxValue
        });
        
        Response.ContentType = "application/xml";

        using (var xml = XmlWriter.Create(Response.Body, new XmlWriterSettings { Indent = true }))
        {
            xml.WriteStartDocument();
            xml.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
            xml.WriteEndElement();
        }
    }
    • 我的问题:**我完全迷路了。起初我以为是因为我没有添加对静态文件的支持,这被认为是一个静态文件,但我有:
app.UseStaticFiles();

Program.cs中。
有什么提示我应该从哪里开始吗?

ldfqzlk8

ldfqzlk81#

from this msdn magazine:“返回void的控制器将产生EmptyResult。”我假设这对Task也适用。
因此,您可能需要将方法的返回类型从Task更改为Task<IActionResult>(或任何最适合您的类型),并使用these availablle methods中的任意一个返回内容。
然后虽然,我不明白为什么没有这些mods目前是在本地工作。

相关问题