ASP.NET Core中的Configuration配置如何进行二次修改以适应长尾词需求?

2026-03-30 10:111阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1614个文字,预计阅读时间需要7分钟。

ASP.NET Core中的Configuration配置如何进行二次修改以适应长尾词需求?

目录 + 1. 内存配置 + 1.1 获取值 + 2. 绑定到实体类 + 3. 绑定至对象图 + 4. 将数组绑定至类 + 5. 在Razor Pages或MVC视图中访问配置 + 相关文章 + ASP.NET Core 2.2 中配置的概述

目录
  • 1.内存配置
    • 1.1GetValue
  • 2.绑定到实体类
    • 3.绑定至对象图
      • 4.将数组绑定至类
        • 5.在Razor Pages页或MVC视图中访问配置

          相关文章

          ASP.NET Core2.2 中的Configuration配置一

          ASP.NET Core2.2 中的Configuration配置二

          1.内存配置

          MemoryConfigurationProvider使用内存中集合作为配置键值对。若要激活内存中集合配置,请在ConfigurationBuilder的实例上调用AddInMemoryCollection扩展方法。可以使用IEnumerable<KeyValuePair<String,String>> 初始化配置提供程序。构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:

          ASP.NET Core中的Configuration配置如何进行二次修改以适应长尾词需求?

          public class Program { public static readonly Dictionary<string, string> _dict = new Dictionary<string, string> { {"MemoryCollectionKey1", "value1"}, {"MemoryCollectionKey2", "value2"} }; public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.AddInMemoryCollection(_dict); }) .UseStartup<Startup>(); }

          而通过启动应用程序时会看到如下配置信息:

          1.1GetValue

          ConfigurationBinder.GetValue<T>从具有指定键的配置中提取一个值,并可以将其转换为指定类型。如果未找到该键,则获取配置默认值。如上述示例中,配置两个value1、value2值,现在我们在键MemoryCollectionKey1配置中提取对应字符串值,如果找不到配置键MemoryCollectionKey1,则默认使用value3配置值,示例代码如下:

          public Startup(IConfiguration configuration) { Configuration = configuration; var config = Configuration.GetValue<string>("MemoryCollectionKey1", "value3"); }

          而通过启动应用程序时会看到如下配置信息:

          ConfigurationBinder.GetValue找到定义string类型MemoryCollectionKey1键值并输出。如果我们把获取键名称更改为MemoryCollectionKey3,再来看看获取键值输出结果:


          我们会看到当ConfigurationBinder.GetValue找不到定义string类型MemoryCollectionKey3键时,则输出默认值。

          2.绑定到实体类

          可以使用选项模式将文件配置绑定到相关实体类。配置值作为字符串返回,但调用Bind 可以绑定POCO对象。Bind在Microsoft.Extensions.Configuration.Binder包中,后者在 Microsoft.AspNetCore.App元包中。现在我们在CoreWeb/Models目录下新增一个叫starship.json文件,配置内容如下:

          { "starship": { "name": "USS Enterprise", "registry": "NCC-1701", "class": "Constitution", "length": 304.8, "commissioned": false }, "trademark": "Paramount Pictures Corp. www.paramount.com" }

          然后再新增一个对应配置内容的实体模型(/Models/Starship.cs):

          public class Starship { public string Name { get; set; } public string Registry { get; set; } public string Class { get; set; } public decimal Length { get; set; } public bool Commissioned { get; set; } }

          构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:

          public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddJsonFile( "starship.json", optional: true, reloadOnChange: true); }) .UseStartup<Startup>();

          示例应用程序调用GetSection方法获取json文件中starship键。通过Bind方法把starship键属性值绑定到Starship类的实例中:

          var starship = new Starship(); Configuration.GetSection("starship").Bind(starship); var _starship = starship;

          当应用程序启动时会提供JSON文件配置内容:

          3.绑定至对象图

          通过第2小节我们学习到如何绑定配置文件内容映射到实例化实体类属性去,同样,配置文件内容也可以绑定到对象图去。现在我们在CoreWeb/Models目录下新增一个叫tvshow.xml文件,配置内容如下:

          <?xml version="1.0" encoding="UTF-8"?> <configuration> <tvshow> <metadata> <series>Dr. Who</series> <title>The Sun Makers</title> <airdate>11/26/1977</airdate> <episodes>4</episodes> </metadata> <actors> <names>Tom Baker, Louise Jameson, John Leeson</names> </actors> <legal>(c)1977 BBC www.bbc.co.uk/programmes/b006q2x0</legal> </tvshow> </configuration>

          然后再新增一个对应配置内容的实体模型(/Models/TvShow.cs),其对象图包含Metadata和 Actors类:

          public class TvShow { public Metadata Metadata { get; set; } public Actors Actors { get; set; } public string Legal { get; set; } } public class Metadata { public string Series { get; set; } public string Title { get; set; } public DateTime AirDate { get; set; } public int Episodes { get; set; } } public class Actors { public string Names { get; set; } }

          构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:
          config.AddXmlFile("tvshow.xml", optional: true, reloadOnChange: true);
          使用Bind方法将配置内容绑定到整个TvShow对象图。将绑定实例分配给用于呈现的属性:

          public Startup(IConfiguration configuration) { Configuration = configuration; var tvShow = new TvShow(); Configuration.GetSection("tvshow").Bind(tvShow); var _tvShow = tvShow; }

          当应用程序启动时会提供XML文件配置内容:

          还有一种Bind方法可以将配置内容绑定到整个TvShow对象图:

          public Startup(IConfiguration configuration) { Configuration = configuration; var _tvShow = Configuration.GetSection("tvshow").Get<TvShow>(); }

          当应用程序启动时会提供XML文件配置内容:

          4.将数组绑定至类

          Bind方法也支持把配置内容键中的数组绑定到对象类去。公开数字键段(:0:、:1:、… :{n}:)的任何数组格式都能够与POCO类数组进行绑定。使用内存配置提供应用程序在示例中加载这些键和值:

          public class Program { public static Dictionary<string, string> arrayDict = new Dictionary<string, string> { {"array:entries:0", "value0"}, {"array:entries:1", "value1"}, {"array:entries:2", "value2"}, {"array:entries:4", "value4"}, {"array:entries:5", "value5"} }; public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddInMemoryCollection(arrayDict); }) .UseStartup<Startup>(); }

          因为配置绑定程序无法绑定null值,所以该数组跳过了索引#3的值。在示例应用程序中,POCO类可用于保存绑定的配置数据:

          public class ArrayExample { public string[] Entries { get; set; } }

          将配置数据绑定至对象:

          public Startup(IConfiguration configuration) { Configuration = configuration; var arrayExample = new ArrayExample(); Configuration.GetSection("array").Bind(arrayExample); var _arrayExample = arrayExample; }

          还可以使用ConfigurationBinder.Get<T>语法,从而产生更精简的代码:

          public Startup(IConfiguration configuration) { Configuration = configuration; var _arrayExample = _config.GetSection("array").Get<ArrayExample>(); }

          当应用程序启动时会提供内存配置内容:

          5.在Razor Pages页或MVC视图中访问配置

          若要访问RazorPages页或MVC视图中的配置设置,请为Microsoft.Extensions.Configuration命名空间添加using指令(C#参考:using指令)并将IConfiguration注入页面或视图。
          在Razor页面页中:

          @page @model IndexModel @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <!DOCTYPE html> <html lang="en"> <head> <title>Index Page</title> </head> <body> <h1>Access configuration in a Razor Pages page</h1> <p>Configuration value for 'key': @Configuration["key"]</p> </body> </html>

          在MVC视图中:

          @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <!DOCTYPE html> <html lang="en"> <head> <title>Index View</title> </head> <body> <h1>Access configuration in an MVC view</h1> <p>Configuration value for 'key': @Configuration["key"]</p> </body> </html>

          以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

          标签:Configuration

          本文共计1614个文字,预计阅读时间需要7分钟。

          ASP.NET Core中的Configuration配置如何进行二次修改以适应长尾词需求?

          目录 + 1. 内存配置 + 1.1 获取值 + 2. 绑定到实体类 + 3. 绑定至对象图 + 4. 将数组绑定至类 + 5. 在Razor Pages或MVC视图中访问配置 + 相关文章 + ASP.NET Core 2.2 中配置的概述

          目录
          • 1.内存配置
            • 1.1GetValue
          • 2.绑定到实体类
            • 3.绑定至对象图
              • 4.将数组绑定至类
                • 5.在Razor Pages页或MVC视图中访问配置

                  相关文章

                  ASP.NET Core2.2 中的Configuration配置一

                  ASP.NET Core2.2 中的Configuration配置二

                  1.内存配置

                  MemoryConfigurationProvider使用内存中集合作为配置键值对。若要激活内存中集合配置,请在ConfigurationBuilder的实例上调用AddInMemoryCollection扩展方法。可以使用IEnumerable<KeyValuePair<String,String>> 初始化配置提供程序。构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:

                  ASP.NET Core中的Configuration配置如何进行二次修改以适应长尾词需求?

                  public class Program { public static readonly Dictionary<string, string> _dict = new Dictionary<string, string> { {"MemoryCollectionKey1", "value1"}, {"MemoryCollectionKey2", "value2"} }; public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.AddInMemoryCollection(_dict); }) .UseStartup<Startup>(); }

                  而通过启动应用程序时会看到如下配置信息:

                  1.1GetValue

                  ConfigurationBinder.GetValue<T>从具有指定键的配置中提取一个值,并可以将其转换为指定类型。如果未找到该键,则获取配置默认值。如上述示例中,配置两个value1、value2值,现在我们在键MemoryCollectionKey1配置中提取对应字符串值,如果找不到配置键MemoryCollectionKey1,则默认使用value3配置值,示例代码如下:

                  public Startup(IConfiguration configuration) { Configuration = configuration; var config = Configuration.GetValue<string>("MemoryCollectionKey1", "value3"); }

                  而通过启动应用程序时会看到如下配置信息:

                  ConfigurationBinder.GetValue找到定义string类型MemoryCollectionKey1键值并输出。如果我们把获取键名称更改为MemoryCollectionKey3,再来看看获取键值输出结果:


                  我们会看到当ConfigurationBinder.GetValue找不到定义string类型MemoryCollectionKey3键时,则输出默认值。

                  2.绑定到实体类

                  可以使用选项模式将文件配置绑定到相关实体类。配置值作为字符串返回,但调用Bind 可以绑定POCO对象。Bind在Microsoft.Extensions.Configuration.Binder包中,后者在 Microsoft.AspNetCore.App元包中。现在我们在CoreWeb/Models目录下新增一个叫starship.json文件,配置内容如下:

                  { "starship": { "name": "USS Enterprise", "registry": "NCC-1701", "class": "Constitution", "length": 304.8, "commissioned": false }, "trademark": "Paramount Pictures Corp. www.paramount.com" }

                  然后再新增一个对应配置内容的实体模型(/Models/Starship.cs):

                  public class Starship { public string Name { get; set; } public string Registry { get; set; } public string Class { get; set; } public decimal Length { get; set; } public bool Commissioned { get; set; } }

                  构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:

                  public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddJsonFile( "starship.json", optional: true, reloadOnChange: true); }) .UseStartup<Startup>();

                  示例应用程序调用GetSection方法获取json文件中starship键。通过Bind方法把starship键属性值绑定到Starship类的实例中:

                  var starship = new Starship(); Configuration.GetSection("starship").Bind(starship); var _starship = starship;

                  当应用程序启动时会提供JSON文件配置内容:

                  3.绑定至对象图

                  通过第2小节我们学习到如何绑定配置文件内容映射到实例化实体类属性去,同样,配置文件内容也可以绑定到对象图去。现在我们在CoreWeb/Models目录下新增一个叫tvshow.xml文件,配置内容如下:

                  <?xml version="1.0" encoding="UTF-8"?> <configuration> <tvshow> <metadata> <series>Dr. Who</series> <title>The Sun Makers</title> <airdate>11/26/1977</airdate> <episodes>4</episodes> </metadata> <actors> <names>Tom Baker, Louise Jameson, John Leeson</names> </actors> <legal>(c)1977 BBC www.bbc.co.uk/programmes/b006q2x0</legal> </tvshow> </configuration>

                  然后再新增一个对应配置内容的实体模型(/Models/TvShow.cs),其对象图包含Metadata和 Actors类:

                  public class TvShow { public Metadata Metadata { get; set; } public Actors Actors { get; set; } public string Legal { get; set; } } public class Metadata { public string Series { get; set; } public string Title { get; set; } public DateTime AirDate { get; set; } public int Episodes { get; set; } } public class Actors { public string Names { get; set; } }

                  构建主机时调用ConfigureAppConfiguration以指定应用程序的配置:
                  config.AddXmlFile("tvshow.xml", optional: true, reloadOnChange: true);
                  使用Bind方法将配置内容绑定到整个TvShow对象图。将绑定实例分配给用于呈现的属性:

                  public Startup(IConfiguration configuration) { Configuration = configuration; var tvShow = new TvShow(); Configuration.GetSection("tvshow").Bind(tvShow); var _tvShow = tvShow; }

                  当应用程序启动时会提供XML文件配置内容:

                  还有一种Bind方法可以将配置内容绑定到整个TvShow对象图:

                  public Startup(IConfiguration configuration) { Configuration = configuration; var _tvShow = Configuration.GetSection("tvshow").Get<TvShow>(); }

                  当应用程序启动时会提供XML文件配置内容:

                  4.将数组绑定至类

                  Bind方法也支持把配置内容键中的数组绑定到对象类去。公开数字键段(:0:、:1:、… :{n}:)的任何数组格式都能够与POCO类数组进行绑定。使用内存配置提供应用程序在示例中加载这些键和值:

                  public class Program { public static Dictionary<string, string> arrayDict = new Dictionary<string, string> { {"array:entries:0", "value0"}, {"array:entries:1", "value1"}, {"array:entries:2", "value2"}, {"array:entries:4", "value4"}, {"array:entries:5", "value5"} }; public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddInMemoryCollection(arrayDict); }) .UseStartup<Startup>(); }

                  因为配置绑定程序无法绑定null值,所以该数组跳过了索引#3的值。在示例应用程序中,POCO类可用于保存绑定的配置数据:

                  public class ArrayExample { public string[] Entries { get; set; } }

                  将配置数据绑定至对象:

                  public Startup(IConfiguration configuration) { Configuration = configuration; var arrayExample = new ArrayExample(); Configuration.GetSection("array").Bind(arrayExample); var _arrayExample = arrayExample; }

                  还可以使用ConfigurationBinder.Get<T>语法,从而产生更精简的代码:

                  public Startup(IConfiguration configuration) { Configuration = configuration; var _arrayExample = _config.GetSection("array").Get<ArrayExample>(); }

                  当应用程序启动时会提供内存配置内容:

                  5.在Razor Pages页或MVC视图中访问配置

                  若要访问RazorPages页或MVC视图中的配置设置,请为Microsoft.Extensions.Configuration命名空间添加using指令(C#参考:using指令)并将IConfiguration注入页面或视图。
                  在Razor页面页中:

                  @page @model IndexModel @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <!DOCTYPE html> <html lang="en"> <head> <title>Index Page</title> </head> <body> <h1>Access configuration in a Razor Pages page</h1> <p>Configuration value for 'key': @Configuration["key"]</p> </body> </html>

                  在MVC视图中:

                  @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <!DOCTYPE html> <html lang="en"> <head> <title>Index View</title> </head> <body> <h1>Access configuration in an MVC view</h1> <p>Configuration value for 'key': @Configuration["key"]</p> </body> </html>

                  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

                  标签:Configuration