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

Asp.Net Core 3中Program.cs文件如何声明函数解决修饰符无效报错

问题原因

该错误是因为你使用了顶级语句语法的Program.cs文件,这类文件中直接书写的代码默认被编译器封装到自动生成的Program类的Main入口方法内部。方法内部只能定义本地函数,不允许添加public/private这类访问修饰符。

正确实现方案
  • 方案1:使用本地函数(最简便)
    直接去掉public修饰符,把函数写在app.Run()之前即可,顶级语句范围内定义的本地函数可以直接在配置逻辑中调用,示例如下:
app.UseDefaultFiles();
app.UseStaticFiles();

// 去掉public修饰符定义本地函数
Task OnFallbackAsync(DelegateResult<HttpResponseMessage> response, Context context)
{
    Console.WriteLine("About to call the fallback action. This is a good place to do some logging");
    return Task.CompletedTask;
}

app.Run();
  • 方案2:显式声明Program类(需要访问修饰符/跨文件调用时使用)
    如果你需要给方法加访问修饰符、或者要在项目其他文件中调用该方法,可以手动补全Program的结构,显式声明partial Program类,把自定义函数作为类的成员:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.UseDefaultFiles();
app.UseStaticFiles();

app.Run();

// 显式声明partial Program类
public partial class Program
{
    // 此时可以正常添加public等访问修饰符
    public static Task OnFallbackAsync(DelegateResult<HttpResponseMessage> response, Context context)
    {
        Console.WriteLine("About to call the fallback action. This is a good place to do some logging");
        return Task.CompletedTask;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:07