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
相关产品推荐
相关产品推荐

