如何在 .netcore 6 中创建站点地图文件

How to Create Sitemap file in .netcore 6

提问人:Ankita Sen 提问时间:8/22/2023 最后编辑:Ankita Sen 更新时间:8/23/2023 访问量:79

问:

我尝试创建站点地图.xml文件。在 localhost 代码中工作完美并创建文件,但在服务器上托管后,它会显示 500 错误并且不会创建站点地图文件

var list = new List<SitemapNode>();
foreach (var item in listdata)
{
  double? priority = 1;
  if (item.Priority != 0 && item.Priority != null) { priority = item.Priority; }
  list.Add(new SitemapNode { LastModified = item.ModifiedOn, Priority = priority, Url = item.Link });
}
new SitemapDocument().CreateSitemapXML(list, Environment.WebRootPath);

并将其包含在应用程序之前的 Program.cs 文件中。使用Routing()

app.UseXMLSitemap(environment.WebRootPath);

托管此代码时,在浏览器控制台中将显示 500 错误。但是在当地的主人,它的工作很好。此行导致服务器“new SitemapDocument()”上出现 500 错误。CreateSitemapXML(列表,Environment.WebRootPath);”当我从托管文件中删除此行时,没有出现错误,但此行错误出现。

我已经做了所有事情,但仍然没有工作。

错误在此处输入图像描述的屏幕截图链接

C# asp.net xml asp.net-core-6.0

评论

0赞 sbridewell 8/23/2023
欢迎来到 Stack Overflow!如果您获得 HTTP 500 状态,那么这很可能意味着您的代码中的某些内容引发了未经处理的异常。尝试将整个方法包装在 中,并在块中记录异常的详细信息。如果您可以将异常类型、消息和堆栈跟踪添加到您的问题中,那么我们将处于更好的位置来提供帮助。try { .... } catch (Exception ex) { ... }catch
0赞 Ankita Sen 8/23/2023
托管此代码时。之后,在浏览器控制台中,它将显示 500 错误。但是在当地的主人,它的工作很好。此行导致服务器“new SitemapDocument()”上出现 500 错误。CreateSitemapXML(列表,Environment.WebRootPath);”当我从服务器中删除此行时,没有出现错误,但会出现此行错误。

答:

0赞 Qiang Fu 8/23/2023 #1

这是工作示例

    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IWebHostEnvironment _env;

        public HomeController(ILogger<HomeController> logger, IWebHostEnvironment env)
        {
            _logger = logger;
            _env = env;
        }

        //not returning any view  
        public string CreateSitemapInRootDirectory()
        {
            var list = new List<SitemapNode>();
            list.Add(new SitemapNode { LastModified = DateTime.UtcNow, Priority = 0.8, Url = "https://www.example.com/asp-dot-net-turotial-part1", Frequency = SitemapFrequency.Daily });
            list.Add(new SitemapNode { LastModified = DateTime.UtcNow, Priority = 0.7, Url = "https://www.example.com/asp-dot-net-turotial-part3", Frequency = SitemapFrequency.Monthly });
            new SitemapDocument().CreateSitemapXML(list, _env.WebRootPath);
            return "sitemap.xml file successfully created";
        }
     }

程序 .cs

app.UseXMLSitemap(builder.Environment.WebRootPath);

IIS 测试。
enter image description here

我认为在环境服务中注入的东西应该有问题。
您可以尝试的另一件事是添加以在IIS中托管时查看详细信息错误页面。
app.UseDeveloperExceptionPage();

评论

0赞 Ankita Sen 8/23/2023
你说的我已经做到了这一切,但在服务器上托管文件后仍然出现 500 错误。我添加了有问题的屏幕截图
0赞 Qiang Fu 8/23/2023
@AnkitaSen您的IIS版本是什么。尝试重新安装 .net6 托管捆绑包。