提问人:Ankita Sen 提问时间:8/22/2023 最后编辑:Ankita Sen 更新时间:8/23/2023 访问量:79
如何在 .netcore 6 中创建站点地图文件
How to Create Sitemap file in .netcore 6
问:
我尝试创建站点地图.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);”当我从托管文件中删除此行时,没有出现错误,但此行错误出现。
我已经做了所有事情,但仍然没有工作。
错误在此处输入图像描述的屏幕截图链接
答:
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中托管时查看详细信息错误页面。app.UseDeveloperExceptionPage();
评论
0赞
Ankita Sen
8/23/2023
你说的我已经做到了这一切,但在服务器上托管文件后仍然出现 500 错误。我添加了有问题的屏幕截图
0赞
Qiang Fu
8/23/2023
@AnkitaSen您的IIS版本是什么。尝试重新安装 .net6 托管捆绑包。
评论
try { .... } catch (Exception ex) { ... }
catch