关于ConfigMap和.Net Core
昨天在做一个获取ConfigMap的功能的时候,踩坑了,首先就是自己的无知,由于公司用的华为CCE,而我对K8S这一块也不了解,所以一开始就在华为的官方文档去找解决方案,于是一天的时间就过去了,自己也没啥收获。后来在同事的帮助下,才稍微了解了一点,实在是自己太菜,然后方向也找错了,白白浪费了一天时间。
首先就是ConfigMap的创建了,这里创建了一个连接Mysql的配置项
创建的ConfigMap需要进行挂载,之前挂载的路径一直不对,也找不到原因,然后读取配置项的配置数据的时候,就一直报错,
因为我在挂载路径的时候,配置的路径是 /config,也就是说将我创建的ConfigMap的data.json挂载到这里,但是为啥会出错呢,我一开始按照他的提示来修改路径
就这样改,但是这样改了之后出的问题就是,错误提示会在我的path前面再加一个/app ,这样就永远不对了,后来在一篇文章里面,得到了启发,将我的挂载路径改成了/app/config,
然后我的代码里面也改成这样
然后就成功了。
所以我是不是可以这样认为:由于dockerfile里面默认的工作目录是/app,所以我将我的ConfigMap挂载到/app/config下,在程序的path里面,/app可以省略,可以直接写成图中那样。然后挂载的路径会自动映射到程序中的指定文件,通过代码就可以读取data.json文件了。
对于以上总结,我总感觉有些地方不对,希望大佬在评论区指出。
在测试Webapi的时候,model的属性开头是大写的,但是测试的时候返回的json却是小写的。所以去查了一下。需要在startup.cs的ConfigureServices的services.AddControllers()方法后面添加一行代码。
services.AddControllers().AddNewtonsoftJson(options =>
{
// 忽略循环引用
// options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// 不使用驼峰
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
// 设置时间格式
// options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
// 如字段为null值,该字段不会返回到前端
// options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了