你不得不知道的 .NET CORE—— Startup 的秘密

本文探讨了在ASP.NET Core应用中如何灵活使用Startup类,包括指定多个Startup类的方法及其效果,系统默认查找启动类的约定,以及如何通过环境变量选择不同的启动类。此外,还介绍了启动类命名和实现IStartup接口的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道,在 Main 函数中必须要指定一个 Startup 启动类,但下面的内容鲜为人知。

可以指定多个 Startup

static void Main(string[] args)
{
	WebHost.CreateDefaultBuilder(args)
		.UseStartup<Starup1>()
		.UseStartup<Startup2>()
		.UseStartup<Startup3>()
		//...
}

但结论却是,只有最后一个 Startup 启动类有效。我也是醉了。

如果我们不想指定一个启动类,系统默认会提供使用程序集查找,那查找的约定是怎样的呢?
WebHost.CreateDefaultBuilder(args)
		.UseStartup("程序集1;程序集2;...")
Startup 启动类的环境变量约定

环境变量内置分为三种:Development、Staging 和 Production,当然你也可以用你自己的。 Core 的内部机制可以会结合你的 环境变量名 + Startup 来帮你找寻相应的启动类

static void Main(string[] args)
{
	WebHost.CreateDefaultBuilder(args)
		.UseStartup("MyApp")
		//...
}

public class DevelopmentStartup
{
	//...
}

public class ProductionStartup
{
	//...
}

当你在开发的时候会使用 DevelopmentStartup 启动类,当你在生产环境的时候就会切换到 ProductionStartup 启动类了。

类名后缀为 Startup 的约定

只要你的启动类的名称结尾是用 Startup 来命名的,都会视为启动类。

public class MyClassStartup {}
实现了 IStartup 接口的类

你的类如果实现了 IStartup 接口,同样也可以被系统找到。

public class MyClass : IStartup { }

如果以上条件不具备,就会抛出异常了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我 Teacher 周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值