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

.NET6控制台应用搭建WebApplication主机返回404问题排查

.NET6控制台应用添加RazorPages后返回404的解决方法

我创建了一个.NET6控制台应用并安装了Microsoft.AspNetCore.App包,代码可正常运行并接收HTTP请求,但始终返回404响应。代码如下:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

using AppHostTest;

var testBuilder = WebApplication.CreateBuilder(new WebApplicationOptions ());
testBuilder.Services.AddRazorPages();
testBuilder.Services.AddTransient<IVehicle, Car>();

var testapp = testBuilder.Build();
testapp.UseHttpsRedirection();
testapp.UseStaticFiles();
testapp.UseRouting();
testapp.UseAuthorization();
testapp.MapRazorPages();
testapp.Run();

该代码与WebApplication模板生成的代码完全一致,但行为却不同。尝试安装Microsoft.AspNetCore.Mvc包并在服务中添加AddMvc()、在应用中添加UseMvc(),问题仍未解决。

更新1:发现模板生成的WebApplicationBuilder中WebRootFileProvider为CompositeFileProvider,WebRootPath为wwwroot;而控制台应用创建的WebApplicationBuilder中WebRootFileProvider为NullFileProvider,WebRootPath为null。


问题原因

控制台应用模板默认不会自动配置RazorPages所需的基础结构:缺少wwwroot静态文件目录、Pages页面文件夹,且未显式指定WebRootPath,导致应用无法找到Razor页面和静态资源,从而返回404。

解决步骤

  1. 创建wwwroot目录
    在项目根目录下新建wwwroot文件夹,右键文件夹→属性→设置"复制到输出目录"为"如果较新则复制"。

  2. 显式配置WebRootPath
    修改WebApplicationBuilder的创建代码,指定WebRootPath:

var testBuilder = WebApplication.CreateBuilder(new WebApplicationOptions
{
    WebRootPath = "wwwroot"
});
  1. 添加RazorPages页面
    在项目中创建Pages文件夹,添加至少一个基础页面,比如Index.cshtml和对应的代码文件:
    Index.cshtml:
@page
@model AppHostTest.Pages.IndexModel
@{
    ViewData["Title"] = "Home";
}

<h1>Hello from Razor Pages!</h1>

Index.cshtml.cs:

using Microsoft.AspNetCore.Mvc.RazorPages;

namespace AppHostTest.Pages;

public class IndexModel : PageModel
{
    public void OnGet()
    {
    }
}
  1. 确保页面文件被正确复制到输出
    检查项目文件(.csproj),确保包含以下配置,让Razor页面文件被复制到输出目录:
<ItemGroup>
    <Content Update="Pages\**\*.cshtml">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

完成以上步骤后,重新运行应用,访问根路径即可正常加载Razor页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:35