C# net core程序调试错误集(持续更新)
C#程序调试错误集
1.依赖注入错误System.InvalidOperationException: Unable to resolve service for type 'xxx' while attempting to activate 'xxx'.
1.1 出错现象
System.InvalidOperationException: Unable to resolve service for type 'IBMS.Infrastruct.UoW.UnitOfWork' while attempting to activate 'IBMS.WEBAPI.Controllers.ValueController'.
出错图片如下:

1.1.1原因是net core在调用ValueController的时候,发现UnitOfWork没有进行依赖注入。
1.2 出错现象
System.InvalidOperationException: Unable to resolve service for type 'IBMS.Infrastruct.Context.IPBoxContext' while attempting to activate 'IBMS.Infrastruct.UoW.UnitOfWork'.
出错图片如下:

1.2.1 原因是net core在调用UnitOfWork的时候,发现IPBoxContext没有进行依赖注入。
1.3 解决方法
在startup.cs中的ConfigureServices方法中进行依赖注入
services.AddDbContext<IIPBoxContext, IPBoxContext>(options =>
options.UseMySql(Configuration.GetConnectionString("MySqlConnection")));
services.AddScoped<IIPBoxRepository, IPBoxRepository>();
services.AddScoped(typeof(UnitOfWork));//注入工作单元
services.AddScoped(typeof(IPBoxContext));
注意:IPBoxContext进行AddDbContext注入数据上下文之后,仍需要注入services.AddScoped(typeof(IPBoxContext))。
2. 未创建实例错误
2.1 出错现象Object reference not set to an instance of an object.
出错图片如下:

2.1.1 原因是没有创建数据库上下文对象
2.2 出错现象System.ArgumentNullException: Value cannot be null.
出错图片如下:

2.2.1 原因是没有创建数据库上下文对象
2.3 解决方法
在服务层创建一个实例的仓储,并传入其对应的数据上下文。
public class IPBoxServices : ServicesBase<IPBox>, IIPBoxServices
{
public IPBoxContext DbContext { get; set; } = null;
public IPBoxServices(IPBoxContext dbContext)
{
DbContext = dbContext;
}
#region 字段
private IPBoxRepository _IPBoxRepository = null;
#endregion
#region 操作类属性
public IPBoxRepository IPBoxRepository => _IPBoxRepository ?? (_IPBoxRepository = new IPBoxRepository(DbContext));
#endregion
}
备注:这里最好是在RepositoryBase里直接通过数据库工厂模式创建一个数据库的上下文,这样不会让仓储层泄露到应用层。当然以上方法基本没什么很大影响。
3.传入EF Core 拉姆达(lambda)表达式为空报错
3.1 出错现象
System.ArgumentNullException: Value cannot be null. at lambda_method(Closure , Object , Object[] )
出错图片如下

3.1.1 原因
获取列表数据时传入lambda表达式为空。具体如下。
AlarmList = _alarmServices.GetList();
3.2解决方法
当lambda表达式为空时,直接返回列表数据。问题得到有效解决
if (predicate == null)
{
return _dbSet.ToList();
}
整个代码块如下:
public List<TEntity> GetList(Expression<Func<TEntity, bool>> predicate = null, string ordering = "", bool isNoTracking = true)
{
if (predicate == null)
{
return _dbSet.ToList();
}
var data = isNoTracking ? _dbSet.Where(predicate).AsNoTracking() : _dbSet.Where(predicate);
if (!string.IsNullOrEmpty(ordering))
{
data = data.OrderByBatch(ordering);
}
return data.ToList();
}
4.泛型类约束出错
4.1 什么是泛型类约束
where TEntity : class
表示TEntity必须是一个类。
4.2 出错现象
错误 CS0311 类型“TEntity”不能用作泛型类型或方法“DbContextExtensions.UpdatePerfect(DbContext, params TEntity[])”中的类型参数“TEntity”。没有从“TEntity”到“IBMS.Domain.Core.Models.IEntity”的隐式引用转换。

4.2.1 解释
仓储层的TEntity不能用做扩展层的TEntity。因为一个是需要包含IEntity,而一个是没有包含
4.3 出错原因
实际的Entity调用中用了IEntity字段,但是仓储层中没有包含IEntity。
4.4 解决
仓储层包含IEntity的泛型约束即可。
where TEntity : class,IEntity
问题得到圆满解决。
5.无法将'System.Boolean'类型转化到 'System.SByte'类型
5.1 错误提示
System.InvalidCastException: Unable to cast object of type 'System.Boolean' to type 'System.SByte'.
5.2 错误原因
数据库mysql设置了tinyint(1)类型(mysql会自动将其转化成bool类型),而C#中是byte类型。导致bool与byte (tinyint)之间无法转化。
5.3 解决方法
在mysql连接字符串中加入TreatTinyAsBoolean=false;这样,mysql不会将tinyint转化成bool类型。即可解决问题
6.log4Net已经没法满足Net Core 3.1了,可以生成包,但是依赖过低了,无法打包发布。智能能够生成VS工具里面运行。
6.1 错误提示

6.2 错误原因
依赖包过低,该插件也没在维护。
6.3 解决方法
换用Nlog。
C# net core程序调试错误集(持续更新)的更多相关文章
- DataStage 错误集(持续更新)
DataStage 错误集(持续更新) DataStage序列文章 DataStage 一.安装 DataStage 二.InfoSphere Information Server进程的启动和停止 D ...
- Android源码编译常见错误(持续更新)
本文为个人工作中处理遇到的编译问题做个小结,后续遇到新的问题,持续更新. No such file or directory: 1. 检查路径是否有问题,文件是否存在,若文件存在且路径没问题 2. 检 ...
- tensorflow安装调试总结(持续更新)
这段时间需要部署tensorflow到linux上,由于堡垒机不能连外网,所以pip.apt-get.wget.git统统不能用,然后就是各种调试了,下面整理了一些遇到的问题和解决方案,供大家参考(C ...
- hadoop基础----hadoop实战(九)-----hadoop管理工具---CDH的错误排查(持续更新)
在CDH安装完成后或者CDH使用过程中经常会有错误或者警报,需要我们去解决,积累如下: 解决红色警报 时钟偏差 这是因为我们的NTP服务不起作用导致的,几台机子之间有几秒钟的时间偏差. 这种情况下一是 ...
- C#/.NET/.NET Core学习视频汇总(持续更新ing)
前言: 之前有很多小伙伴在我的公众号后台留言问有没有C#/.NET/.NET Core这方面相关的视频推荐,我一般都会推荐他们去B站搜索一下.今天刚好有空收集了网上一些比较好的C#/.NET/.NET ...
- IIS发布站点错误收集(持续更新)
本文主要收集IIS在发布站点过程中遇到的错误,并提供解决办法.并亲测可行.如果您也在使用IIS发布站点的过程中遇到了一些问题,欢迎留言提问. (1.) HTTP错误500.21-Internal Se ...
- ACM 刷题错误总结 持续更新并持续回想中o(╯□╰)o
一.段错误/RE 1.& 变量取地址 2.数组越界 3.爆栈, 非常可能是死循环,ruturn的边界没有处理好,或者是递归的内容里有死循环的部分. 4.线段树 逢写必错,都是build(i*2 ...
- mongodb管理副本集(持续更新中)
许多维护工作不能在备份节点上完成 因为要写操作,也不能在主节点上进行,这就需要单机模式启动服务器, 是指重启成员服务器,让他成为一个单机运行的服务器,而不再是副本集中的一员(临时的) 在单机 ...
- ios 常见错误整理 持续更新
本文转载至 http://blog.csdn.net/yesjava/article/details/8086185 1. mutating method sent to immutable obj ...
随机推荐
- mac mysql start ERROR! The server quit without updating PID file
在mac下安装完mysql,启动时出现error: ERROR! The server quit without updating PID file (/usr/local/var/mysql/nal ...
- 在Linux中配置jdk,Tomcat,MySQL
解压缩: tar 命令 : 使用方式 tar [参数] source [target] source - 压缩文件 target - 解压缩后的目标位置, 默认解压到当前目录 常用写法 : 解压缩 : ...
- MYSQL“错误代码#1045 Access denied for user 'root'@'********8' (using password:YES)”
用IP远程连接数据库时报这个错误,我查看了下数据库是否开启了远程连接,已经开了,服务也启动着,网上的方法都是重置密码修改权限之类的,我发现都没用,我看了一下数据库所在的电脑,IP地址变了,然后真相了.
- HDU-6115
我们将A省简化为由N个城市组成,某些城市之间存在双向道路,而且A省的交通有一个特点就是任意两个城市之间都能通过道路相互到达,且在不重复经过城市的情况下任意两个城市之间的到达方案都是唯一的.聪明的你一定 ...
- NIO-Channel接口分析
目录 NIO-Channel源码分析 目录 前言 接口 SCTP协议 UDP协议 TCP协议 文件 总结 相关文献 NIO-Channel源码分析 目录 NIO-概览 NIO-Buffer NIO-C ...
- 【性能优化】404- 从 12.67s到1.06s 性能优化实战
作者:jerryOnlyZRJ 来源:https://juejin.im/post/5b6fa8c86fb9a0099910ac91 本文是对之前同名文章的修正,将所有webpack3的内容更新为we ...
- Redis sorted set 常用命令介绍
Redis sorted set 使用: Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 ...
- Nginx(四)-- Nginx的扩展-OpenRestry
1. OpenResty 安装及使用 OpenResty 是一个通过 Lua 扩展 Nginx 实现的可伸缩的 Web 平台,内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地 ...
- Javascript 垃圾回收方法
Javascript 垃圾回收方法 标记清除(mark and sweep) 这是 JavaScript 最常见的垃圾回收方式,当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为& ...
- 设置td中的值自动换行
style="word-wrap:break-word;word-break:break-all;"注意要设置td的宽度,否则没有用word-wrap:设置或检索当当前行超过指定容 ...