一个 .Net Core WebAPI项目 + .Net Framework 4.62 Winform + .Net Standard 2.0 类库项目过程中的几点小结

这个组合有点奇葩,但后台就想快速,用了winform(不高兴调页面效果了,直接拖拽控件绑定数据解决),然后 .net core 和 .net framework 共用类库的时候扯了, 查了半天版本表,只能用standard 2.0 可以同时满足两方面的要求

说几个踩的坑:

  1. Mysql数据库连接器踩的坑
    1.1 安装Mysql官方for visual studio插件 (无效,用起来各种奇葩问题);
    1.2 安装使用Mysql 官方的 .net connnector (基本无效,开始在类库和winform项目中还马虎,做.net core WEBAPI的时候各种奇葩问题)
    1.3 使用Nuget里的Mysql包(可以,但同时要清除掉1.2残余);

  2. Mysql数据库检索数据的坑
    遇到一个奇葩问题,就是在对一个数据表select的时候一直报 ArgumentOutofRangeExcepition, 长度必须为非负值,空表也这样,把MYSQL的文档都翻了一遍,看到有人抱怨这个很类似的,基本无解状态
    仔细排查了表结果,发现一个字段 用的是 char 36 (在Mysql实操中一般用这个存储guid,它会自动转换)的可null字段。 这个字段里如果是null,就会弹这个Exception,果断设置了默认值全0,过关。

  3. System.Text.Json 的坑
    微软再三推荐用这个代替Newtonjson,信了他的鬼用上了, 然后发现他会把中文转义成 u48FA 这种存储到数据库里,虽然服务端取出来正常和存了中文的是一样的,但这种JSON字串发给客户端,前端想死了,查了半天资料:最后加了两段
    var options = new JsonSerializerOptions
    {
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
    WriteIndented = true
    };
    return JsonSerializer.Serialize(ts, options);
    好歹解决了。

  4. 其他的想起来了再修改吧。。

原文地址:https://www.cnblogs.com/occulter/p/14246574.html