首页 新闻 搜索 专区 学院

如何在使用 WebApplication.CreateBuilder 时使用 UseStartup

0
悬赏园豆:30 [待解决问题]

在 ASP.NET Core 6 中引入了 WebApplication.CreateBuilder ,请问如何继续使用 UseStartup<Startup>()

问题补充:

无论使用 builder.WebHost.UseStartup

ar builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseStartup<Startup>();
var app = builder.Build();
app.Run();

还是使用 builder.Host.ConfigureWebHostDefaults

var builder = WebApplication.CreateBuilder(args);
builder.Host.ConfigureWebHostDefaults(_ => _.UseStartup<Startup>());
var app = builder.Build();
app.Run();

应用都无法正常启动

dudu的主页 dudu | 高人七级 | 园豆:36418
提问于:2021-11-21 13:00
< >
分享
所有回答(4)
0

找到了一个有点啰嗦的解决方法

var builder = WebApplication.CreateBuilder(args);

var startup = new Startup(builder.Configuration);
startup.ConfigureServices(builder.Services);

var app = builder.Build();
startup.Configure(app, app.Environment);

app.Run();
dudu | 园豆:36418 (高人七级) | 2021-11-21 14:49
0

我也想知道这个,有没有办法把VS2022新建Web应用模板改回原来的样子,看不到Main方法心慌。有Main方法就能明确知道程序从那儿开始那儿结束,看不到Main方法你需要很清楚影藏在背后的执行逻辑才行,版本更新这么频繁,前面的还没熟悉后面的版本又变了。

Adming | 园豆:10 (初学一级) | 2021-11-21 21:22

创建 .NET 5.0 项目然后把 TargetFramework 改为 net6.0,参考 Use the old program style in Visual Studio

支持(0) 反对(0) dudu | 园豆:36418 (高人七级) | 2021-11-21 22:20
1

WebApplication就是以干掉Startup类把代码挪到Main函数里为目标设计的。按照微软的说法这种方式覆盖98%的情况,如果确实遇到剩下的2%,那还是退回老模板的代码吧。
新代码连端点中间件都不用自己注册,直接就开始写端点配置,可想而知里面搞了多少名堂。

coredx | 园豆:626 (小虾三级) | 2021-12-03 02:32
0
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).Build().Run();
 
这种方式比较优雅, 反正 WebApplication本身就是更高一层的抽象 !不使用也没关系。
realyrare | 园豆:214 (菜鸟二级) | 2021-12-07 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册