You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5 Razor页面IIS返回404,Visual Studio正常,求排查思路

排查.NET Core 5 Razor页面生产环境404问题的方向

问题背景

基于.NET Core 5构建的应用,95%功能正常,但单个Razor页面/providers/information在生产IIS环境及使用dotnet MySite.dll启动时返回404,Visual Studio本地运行正常。页面结构与其他正常页面一致,仅包含基础HTML和简单的OnGet逻辑,调用的API/user/me在全站通用。


排查步骤

  • 检查页面文件部署状态

    • 确认生产服务器上该页面的.cshtml文件存在于对应目录(如Pages/Providers/Information.cshtml),与项目结构一致
    • 验证文件权限,确保IIS应用池身份拥有读取该文件的权限
    • 检查项目文件(.csproj),确认该页面未被标记为<ExcludeFromPublish>true</ExcludeFromPublish>而排除在发布包外
  • 验证路由匹配逻辑

    • 检查Startup.cs/Program.cs中的Razor页面路由配置,确认无自定义路由约束干扰/providers/information的匹配
    • 临时启用路由诊断日志,记录匹配过程:
      // 在ConfigureServices中添加日志配置
      services.AddLogging(builder =>
      {
          builder.AddConsole();
          builder.AddDebug();
      });
      
      // 在Configure的UseEndpoints中添加路由调试元数据
      app.UseEndpoints(endpoints =>
      {
          endpoints.MapRazorPages().WithMetadata(new RouteDebugMetadata());
      });
      
    • 排查是否存在路由冲突:确认无其他Razor页面、API控制器使用相同的/providers/information路由模板
  • 排查页面Model加载异常

    • 确认ProviderInformationChangeRequestModel正确继承自自定义基类(或官方PageModel),且命名空间、程序集在生产环境中正常部署
    • 查看应用日志(Windows事件查看器、应用本地日志文件),检查是否存在Model初始化失败的异常(如依赖注入错误)
  • 验证API调用的上下文差异

    • 临时注释OnGet中的API调用逻辑,硬赋值测试页面是否正常返回:
      public async Task<IActionResult> OnGet()
      {
          this.EntityModel = new ProviderChangeModel();
          this.EntityModel.ProviderUserId = 1;
          this.EntityModel.ProviderId = 1;
          return Page();
      }
      
    • 如果注释后页面正常,说明该场景下/user/me的请求上下文存在差异(如认证状态、请求头缺失),需进一步排查请求上下文
  • 检查发布编译问题

    • 确认项目是否启用Razor预编译,查看.csproj中的<RazorCompileOnPublish>true</RazorCompileOnPublish>设置,若启用则检查预编译程序集是否包含该页面定义
    • 重新执行dotnet publish -c Release,查看发布日志是否有该页面相关的警告或错误
  • 排查IIS特殊配置

    • 检查IIS站点的URL重写规则,确认无规则拦截/providers/information路径
    • 确认IIS应用池的.NET CLR版本设置为无托管代码(适配.NET Core应用)
    • 检查IIS请求筛选规则,确认未禁止该路径的请求

内容的提问来源于stack exchange,提问作者Scott Salyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:25:30