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

将ASP.NET Core Web API部署到Plesk时的404及接口响应问题排查

问题分析与解决方案

核心原因

保留<handlers>节点时,所有请求都会被AspNetCoreModuleV2转发到.NET Core进程处理,但你的项目未配置静态文件中间件,导致index.html这类静态文件请求找不到对应处理逻辑,返回404;而接口请求因为有控制器/路由匹配,能正常响应。

移除<handlers>节点后,静态文件直接由IIS接管处理,所以index.html能正常显示,但接口请求无法转发到.NET Core进程,自然得不到响应。

解决方法

要同时兼容静态文件和接口请求,需完成两步配置:

  1. 保留web.config中的<handlers>节点,确保所有请求都进入.NET Core管道
  2. 在ASP.NET Core项目中添加静态文件中间件,让应用能处理静态文件请求

修改后的web.config(无需移除handlers)

<configuration>
    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\Test.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
        <defaultDocument>
            <files>
                <clear />
                <add value="index.html" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

(注:修正了arguments里的冗余路径\.\,改为标准的.\Test.dll)

在Program.cs中添加静态文件中间件

打开项目的Program.cs,在路由配置前添加静态文件处理逻辑:

var builder = WebApplication.CreateBuilder(args);

// 添加控制器服务(适配你的接口路由)
builder.Services.AddControllers();

var app = builder.Build();

// 优先添加静态文件中间件,处理静态资源请求
app.UseStaticFiles();

// 配置默认文档,访问根路径时自动匹配index.html
app.UseDefaultFiles(new DefaultFilesOptions
{
    DefaultFileNames = new List<string> { "index.html" }
});

// 配置控制器路由端点
app.MapControllers();

app.Run();

补充说明

  • UseStaticFiles()默认读取项目的wwwroot目录,确保你的index.html放在该文件夹下
  • 如果静态文件不在wwwroot,可通过参数指定路径:app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider("你的静态文件目录绝对路径") })
  • UseDefaultFiles()必须放在UseStaticFiles()之前,否则默认文档规则不会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:57:42