发布后RazorPage定义的路由未加入路由表问题排查
.NET Core 6 Razor Pages路由发布后消失的排查思路
检查发布文件完整性:确认对应路由的Razor页面(.cshtml文件)是否被包含在发布包中。直接查看发布后的目标目录,确认这两个页面文件存在;同时检查项目.csproj配置,看有没有
<Content Remove="..." />这类排除文件的设置,避免页面被遗漏发布。验证路由参数约束:给路由的
{eventId}加上明确类型约束,比如如果是Guid类型,将页面指令修改为@page "/Organisation/Events/Event/{eventId:guid}"和@page "/Organisation/Events/Event/{eventId:guid}/Poster"。发布时的路由优化逻辑可能会忽略无明确约束的路由,添加约束后重新发布测试。排查路由冲突:在Program.cs中添加路由调试日志:
builder.Logging.AddFilter("Microsoft.AspNetCore.Routing", LogLevel.Debug);发布后查看日志,确认这两个路由是否被正确注册,或是否存在与Controller路由、其他Razor页面路由的冲突提示。
检查页面模型访问权限:确保页面对应的.cshtml.cs文件中的模型类是
public修饰的,非public的模型类在发布时可能无法被路由系统识别。清理缓存重新发布:删除发布目标目录的所有文件,重新生成发布包并部署,避免旧缓存残留导致路由配置未更新。
排查自定义路由规则:如果项目中有自定义路由约定、实现了
IRouteTemplateProvider或修改过Razor Pages路由配置,检查这些规则是否影响了这两个路由的注册优先级或有效性。
内容的提问来源于stack exchange,提问作者GlennMoseley
相关产品推荐
相关产品推荐

