ASP.NET Core基础三

举报
Echo_Wish 发表于 2022/07/13 14:35:06 2022/07/13
【摘要】 ASP.NET Core (Startup) StartupASP.NET Core必须包含Startup类。它就像 Global.asax 文件,我们传统的 .NET 应用程序。如名称建议的那样,在应用程序启动时首先执行它。在程序类的Main方法中配置主机时,可以使用**UseStartup()**扩展方法配置启动类。请查看下面的程序类,并重点介绍 WebBuilder.UseStart...

ASP.NET Core (Startup)

Startup

ASP.NET Core必须包含Startup类。它就像 Global.asax 文件,我们传统的 .NET 应用程序。如名称建议的那样,在应用程序启动时首先执行它。在程序类的Main方法中配置主机时,可以使用**UseStartup()**扩展方法配置启动类。请查看下面的程序类,并重点介绍 WebBuilder.UseStartup<Startup>() 方法。

在这里插入图片描述

名称“Startup”是按照ASP.NET Core约定进行的。 但是,您可以给Startup类指定任何名称,只需在UseStartup <T>()方法中将其指定为通用参数即可。 例如,要将启动类命名为MyStartup,则将其指定为UseUseup <MyStartup>()。

通过在解决方案资源管理器中单击Startup.cs类文件,在Visual Studio中打开Startup类。 以下是ASP.NET Core 3.x中的默认启动类。

在这里插入图片描述

如上面在代码中看到的,Startup类包含两个公共方法:ConfigureServices和Configure。 Startup类必须包含Configure方法,并且可以选择包含ConfigureService方法。

ASP.NET Core Startup类中的ConfigureServices()方法
依赖注入模式在ASP.NET Core体系结构中大量使用。它包括内置的IoC容器,以使用构造函数提供相关的对象。

在ConfigureServices方法中,可以使用内置IoC容器注册依赖类。注册依赖类后,可以在应用程序中的任何位置使用它。您只需要在要使用它的类的构造函数的参数中包含它即可。 IoC容器将自动注入它。

ASP.NET Core将依赖类称为服务。因此,每当您阅读“服务”,然后将其理解为将在其他一些类中使用的类。

ConfigureServices方法包含IServiceCollection参数,以将服务注册到IoC容器。例如,如果要将RazorPages服务或MVC服务添加到asp.net核心应用程序,则需要将这些服务添加到该方法接受的参数中,如下图所示。

在这里插入图片描述

ASP.NET Core Startup类中的Configure()方法
在Configure方法中,我们可以使用内置IoC容器提供的IApplicationBuilder实例为asp.net核心应用程序配置应用程序请求管道。

ASP.NET Core引入了中间件组件来定义请求管道,该管道将在每个请求上执行。 您仅包括应用程序所需的那些中间件组件,从而提高了应用程序的性能。

带有Empty模板的ASP.NET Core应用程序的默认配置方法包括以下三个中间件,如下图所示。

在这里插入图片描述

AppSetting.json

当我们使用空项目模板或Razor页面或MVC模板或Web API模板创建ASP.NET Core Web应用程序时,Visual Studio会自动为我们创建appsettings.json文件,如下图所示。

在这里插入图片描述

appsettings.json文件是一个应用程序配置文件,用于存储配置设置,例如数据库连接字符串,任何应用程序范围的全局变量等。如果打开ASP.NET Core appsettings.json文件,则默认情况下会看到以下代码 这是由Visual Studio创建的。

在这里插入图片描述

现在,在该文件中添加一个名为MyName的键。 为此,请如下所示修改appsettings.json文件。

由于它是JSON文件,因此您需要以键值对的形式存储值。

在这里插入图片描述

访问AppSetting.json

若要访问Startup类中的配置信息,需要使用ASP.NET Core框架提供的IConfiguration服务。 因此,只需要做的只是通过Startup类的构造函数注入IConfiguration服务。

为此,请修改Startup.cs文件中存在的Startup类,如下所示。

在这里插入图片描述

首先,我们创建了一个IConfiguration _config类型的私有变量(此IConfiguration接口属于Microsoft.Extensions.Configuration命名空间,因此请首先使用此命名空间)。 然后,通过构造函数依赖项注入,我们注入IConfiguration对象并将其存储在私有变量config中。 以下代码。

在这里插入图片描述

然后,我们使用IConfiguration服务实例访问配置变量,即MyName, 以下代码。
在这里插入图片描述

现在运行该应用程序,您应该在浏览器中看到预期的值,如下图所示。

在这里插入图片描述

访问配置的默认顺序是什么?

为同一键读取各种配置源的默认顺序如下:

  1. appsettings.json,
  2. appsettings.{Environment}.json
  3. 用户设置
  4. 环境变量
  5. 命令行参数

如您所见,Program类的Main()方法调用CreateHostBuilder()方法。 然后,CreateHostBuilder()方法在Host类上调用CreateDefaultBuilder()方法。 此CreateDefaultBuilder()方法是设置读取所有配置源的默认顺序的方法。

如果需要,还可以更改此默认顺序,或者即使您愿意,也可以添加自己的自定义配置源以及现有的配置源。 在我们即将发布的文章中,我们将讨论设置自定义配置源。

的默认顺序的方法。

如果需要,还可以更改此默认顺序,或者即使您愿意,也可以添加自己的自定义配置源以及现有的配置源。 在我们即将发布的文章中,我们将讨论设置自定义配置源。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。