Blazor应用中Razor页面TimeTrackInputTime出现HTTP 404错误求助
针对你遇到的TimeTrackInputTime.cshtml页面无法访问的问题,可按以下步骤逐一排查:
确认文件位置与路由匹配
确保该页面文件和其他正常访问的页面(InputTimeForUser.cshtml、UserMaintenance.cshtml)处于同一目录(默认是Pages)。如果页面在子目录中,路由需要包含目录路径,比如放在Pages/TimeTrack下时,路由应写为@page "/TimeTrack/TimeTrackInputTime"。核对页面模型与命名空间
检查TimeTrackInputTimeModel的命名空间是否为FP_Timetrack_Core.Pages,且类为public访问修饰符。如果存在代码隐藏文件(TimeTrackInputTime.cshtml.cs),确保类继承自PageModel,且类名与页面文件名一致(比如public class TimeTrackInputTimeModel : PageModel)。检查项目文件配置
右键TimeTrackInputTime.cshtml文件→属性,确认生成操作为Content。也可以直接打开项目的.csproj文件,查看是否包含以下配置:<Content Include="Pages\TimeTrackInputTime.cshtml" />如果是
<None Include...>或被标记为Exclude,会导致页面不被编译加载。清理重建项目,清除缓存
执行以下操作解决缓存导致的路由未更新问题:- 运行命令:
dotnet clean - 手动删除项目根目录下的
bin和obj文件夹 - 运行命令:
dotnet build - 重启开发服务器
- 运行命令:
验证路由注册与无冲突
确认Program.cs中已正确注册Razor Pages服务和端点:builder.Services.AddRazorPages(); // ... app.MapRazorPages();同时检查是否存在路由冲突:其他页面、API控制器或端点是否使用了
/TimeTrackInputTime路由。可在Program.cs中添加日志输出所有路由,启动后查看控制台:app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); var routes = endpoints.DataSources.SelectMany(s => s.Endpoints).OfType<RouteEndpoint>(); foreach (var route in routes) { Console.WriteLine($"已注册路由: {route.RoutePattern.RawText}"); } });检查URL大小写一致性
虽然Windows系统不区分路径大小写,但部分服务器(如Linux)会严格区分。确保页面的@page "/TimeTrackInputTime"路由与导航链接中的/TimeTrackInputTime大小写完全一致。
内容的提问来源于stack exchange,提问作者Rod

