将配置迁移到 ASP.NET Core

在上一篇文章中,我们开始 将 ASP.NET MVC 项目迁移到 ASP.NET Core MVC。 在本文中,我们将迁移配置。

查看或下载示例代码如何下载

设置配置

ASP.NET Core 不再使用以前版本的 ASP.NET 使用的 Global.asaxweb.config 文件。 在早期版本的 ASP.NET 中,应用程序启动逻辑放置在 Application_StartUpGlobal.asax 中的方法中。 稍后,在 ASP.NET MVC 中, Startup.cs 文件包含在项目的根目录中;并在应用程序启动时调用该文件。 ASP.NET Core 完全采用了此方法,将所有启动逻辑都放在 Startup.cs 文件中。

web.config 文件已在 ASP.NET Core 中替换。 现在可配置配置本身,作为应用程序 Startup.cs启动过程的一部分。 配置仍可以利用 XML 文件,但通常 ASP.NET 核心项目会将配置值放置在 JSON 格式的文件中,例如 appsettings.json。 ASP.NET Core 的配置系统还可以轻松访问环境变量,从而为特定于环境的值提供 更安全、更可靠的位置 。 在不应提交到源代码管理中的机密(如连接字符串和 API 密钥)中,这一点尤其重要。 请参阅 “配置” ,详细了解 ASP.NET Core 中的配置。

Warning

本文使用不需要对用户进行身份验证的本地数据库。 生产应用应使用可用的最安全的身份验证流。 有关已部署测试和生产应用的身份验证的详细信息,请参阅安全身份验证流

若要设置配置,请将以下构造函数和属性添加到 Startup.cs 位于项目的根目录中的文件:

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

public IConfiguration Configuration { get; }

请注意, Startup.cs 此时文件不会编译,因为我们仍然需要添加以下 using 语句:

using Microsoft.Extensions.Configuration;

使用适当的项模板将一个 appsettings.json 文件添加到项目的根目录中。

添加 AppSettings JSON

从 web.config 迁移配置设置

我们的 ASP.NET MVC 项目在元素中包含 web.config<connectionStrings> 中所需的数据库连接字符串。 在 ASP.NET 核心项目中,我们将此信息 appsettings.json 存储在文件中。 打开 appsettings.json并注意,它已包括以下内容:

{
    "Data": {
        "DefaultConnection": {
            "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;"
        }
    }
}

在上面描述的突出显示行中,将数据库的名称从 _CHANGE_ME 更改为数据库的名称。

Summary

ASP.NET Core 会将应用程序的所有启动逻辑放在单个文件中,在其中可以定义和配置必要的服务和依赖项。 它将 web.config 文件替换为灵活的配置功能,该功能可以利用各种文件格式(如 JSON)以及环境变量。