.NET Core - 内存配置和命令行配置方式详解

简介: .NET Core - 内存配置和命令行配置方式详解

内存配置方式

上节介绍配置框架时,给出了一段示例代码

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(
    new Dictionary<string, string>()
    {
        {"key1","value1" },
        {"key2","value2" },
        {"section1:key3","value3" },
        {"section2:section3:key4","value4" }
    }
    );
IConfigurationRoot configurationRoot = configurationBuilder.Build();
Console.WriteLine($"key1:{configurationRoot["key1"]}");
Console.WriteLine($"key2:{configurationRoot["key2"]}");
Console.WriteLine($"key3:{configurationRoot["section1:key3"]}");
IConfigurationSection section1 = configurationRoot.GetSection("section1");
Console.WriteLine($"section1_key3:{section1["key3"]}");
IConfigurationSection section3 = configurationRoot.GetSection("section2:section3");
Console.WriteLine($"section2_section3_key4:{section3["key4"]}");

其实,这里使用的

configurationBuilder.AddInMemoryCollection();

即使内存配置的方式,因此这里主要说下命令行配置方式

 

命令行配置方式

支持的命令格式

  • 无前缀的  key=value 模式
  • 双中横线模式  --key=value   --key value
  • 正斜杠模式 /key=value  /key value
  • 备注:使用无前缀模式时,必须使用=,其他2种模式才可使用空格分隔符

引用包

  • Microsoft.Extensions.Configuration.Abstractions
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.CommandLine

代码演示

在调试命令行配置时,我们可以右键项目,在弹出的属性窗口,选择调试项目,在命令行参数栏填写我们的命令,如

也可以通过lanchSettings.json文件进行编辑

{
  "profiles": {
    "06_Configuration_CommandLine": {
      "commandName": "Project",
      "commandLineArgs": "cmd1=value1 /cmd2=value2 /cmd3 value3 --cmd4=value4 --cmd5 value5 --cmd6:cmd6 value6" // --k1 value1_new -k2 value2_new
    }
  }
}

准备好这些后,我们可以通过

configurationBuilder.AddCommandLine(args);

来启用命令行配置

通过如下代码来测试

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddCommandLine(args);
IConfigurationRoot configurationRoot = configurationBuilder.Build();
Console.WriteLine($"cmd1:{configurationRoot["cmd1"]}");
Console.WriteLine($"cmd2:{configurationRoot["cmd2"]}");
Console.WriteLine($"cmd3:{configurationRoot["cmd3"]}");
Console.WriteLine($"cmd4:{configurationRoot["cmd4"]}");
Console.WriteLine($"cmd5:{configurationRoot["cmd5"]}");
Console.WriteLine($"cmd6_cmd6:{configurationRoot["cmd6:cmd6"]}");
IConfigurationSection configurationSection = configurationRoot.GetSection("cmd6");
Console.WriteLine($"cmd6:{configurationSection["cmd6"]}");

命令替换

除了常规的配置方式外,命令行配置还提供了命令替换功能,我们可以定义一个mapper来存储需要被替换的命令,这样,如果在参数中配置了该替换值的值,那么被替换键的值将被替换。命令替换通常通过“-”或“--”来标识。

var mapper = new Dictionary<string, string>() { { "--k1", "cmd1" }, { "-k2", "cmd2" } };
configurationBuilder.AddCommandLine(args, mapper);
IConfigurationRoot configurationRoot = configurationBuilder.Build();
Console.WriteLine($"--key1:{configurationRoot["--k1"]}");
Console.WriteLine($"key1:{configurationRoot["cmd1"]}");
Console.WriteLine($"-key2:{configurationRoot["-k2"]}");
Console.WriteLine($"key2:{configurationRoot["cmd2"]}");

这里,需要注意

  • 命令替换,类似于起别名,首先要定义字典
  • 使用于类似--help用-h代替的场景
  • 映射字典不能包含重复key,否则报错

本节结束,下节讲解环境变量配置和文件提供程序配置方式。

 

源码可访问

https://github.com/IronMarmot/Samples/tree/master/CoreSamples


相关文章
|
9月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
2892 0
|
6月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
625 11
|
6月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
538 6
|
8月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
520 5
|
9月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
1149 0
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
1532 4
|
Java
手动修改内存配置
手动修改内存配置
304 12
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
371 1