解决Program.cs报错CS0117:WebApplicationBuilder无CreateBuilder定义
错误原因
编译报错CS0117: 'WebApplicationBuilder' does not contain a definition for 'CreateBuilder'是静态方法调用归属类写错导致的。CreateBuilder是WebApplication类型的静态方法,不属于WebApplicationBuilder,这是ASP.NET Core 6+ 新托管模型的基础API调用错误。
修复步骤
- 替换错误的builder初始化代码
错误写法:
正确写法:var builder = WebApplicationBuilder.CreateBuilder(args);var builder = WebApplication.CreateBuilder(args); - 修正代码里的其他逻辑问题,避免启动失败:
- 移除
builder.Services.AddDbContext外层多余的object value =赋值,服务注册方法不需要额外变量接收返回值。 - 把
app.Run()从if (builder.Environment.IsDevelopment())判断块内部移到外部,否则非开发环境下程序启动后会直接退出,不会监听端口。 - 把
UseHttpsRedirection、UseAuthorization、MapControllers这类所有环境都需要生效的中间件配置,从开发环境判断块里移出来,避免生产环境接口无法正常访问。 - 后续如果取消Swagger相关代码的注释,记得补上注释块对应的闭合
});,同时提前安装对应NuGet包:- Swagger功能需要安装
Swashbuckle.AspNetCore - 内存数据库EF Core功能需要安装
Microsoft.EntityFrameworkCore.InMemory
- Swagger功能需要安装
- 所有用到的类型记得在文件顶部引入对应命名空间,否则会触发新的找不到类型的编译错误,常用需要引入的命名空间包括:
using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models;
- 移除
修正后完整可参考代码
internal class Program { private static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // 注册服务到容器 builder.Services.AddControllers(); builder.Services.AddDbContext<MyWebApiContext>(opt => opt.UseInMemoryDatabase("MyWebAPIContext")); // Swagger服务注册(需要时取消注释即可) //builder.Services.AddSwaggerGen(c => //{ // c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); //}); var app = builder.Build(); // 配置HTTP请求管道 if (builder.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); // 开发环境下可在此处添加Swagger中间件 } app.UseDefaultFiles(); app.UseStaticFiles(); app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } }
内容的提问来源于stack exchange,提问作者DoitlikeJordan23
相关产品推荐
相关产品推荐

