• 关于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;
    });

  • 相关阅读:
    Java中的BoneCP数据库连接池用法
    css 属性选择器笔记
    px,em,rem的区别
    谈谈newDate()的简单使用 JS
    user-select属性用法
    闭包解决的问题
    jQuery 中position()与offset()的区别
    attr() VS prop()
    .toArray()与jQuery.makeArray()的区别
    浏览器的缓存控制
  • 原文地址:https://www.cnblogs.com/fanlin92/p/12751091.html
Copyright © 2020-2023  润新知