当我的应用程序启动时,我想让它动态创建 sitemap.txt。这样做需要我拥有网站的域名,该域名对于开发和生产插槽来说是不同的。
有没有办法在 Main() 中得到这个?我认为从逻辑上讲,系统应该知道这一点。但 Blazor 只有
NavigationManager
并且该服务似乎只能在页面上下文中使用。
如果没有,我可以在加载第一个页面时将该值填充到单例服务中,然后让
BackgroundService
创建文件。在这里询问以避免这一切。
更新:sitemap.txt 的规范在这里(以及 sitemap.xml 的规范)。
服务器本身不知道它的域名,因为它只能通过它的IP访问。您在请求期间可以看到域名的原因是因为它是随请求一起发送的,或者在前端,因为浏览器知道它。
您可以查看
builder.Environment
并从配置文件加载当前环境的域名。
您还可以使
sitemap.txt
指向控制器并在每次请求时生成它,但根据您网站的大小,这可能需要很长时间。这样做的优点是不需要写入您的文件系统。