【遇坑记实 二】小坑合集

简介: 【遇坑记实 二】小坑合集

##1 页面突然不显示

如果是连Menu都无法加载,很有可能是配置文件出问题了

###问题原因

别人更改了远程的配置文件(远程的拥有最大的版本号),并且适配的修改了代码,但你本地的代码并没有做适配性修改,而且每次运行的时候你都会拉取远程配置文件覆盖本地配置文件,这就导致代码和配置文件不匹配。

###解决方案

两种情况,总之要保证代码和配置文件的一致性:

  1. 如果还需要在本地调试,不需要远程代码,把本地的配置文件版本号改大(超级大),这样远程的配置文件就不会自动下载了。
  2. 如果不需要本地调试,就获取最新的代码去匹配配置文件

第一种为推荐做法。当然当你修改完代码,要上传配置文件的时候,把超级大的配置文件版本号改回只比远程目前最新的大一号就行啦

##2 VS多线程调试断点无法命中

在多线程代码中:

Task task = Task.Factory.StartNew(
                 () =>
                 {
                 });

###问题原因

在多线程内部的代码,打了断点,却无论如何都不能命中断点(无论是从单元测试还是直接从网页执行),这是因为你当前命中断点是一个线程,代码却从另一个线程溜了。

###解决方案

调试的过程中先注释掉多线程部分代码,断点执行逻辑就可以了。

##3 从git仓库clone下来的代码为什么报引用错误

这个问题很显然的现象是,明明看到引用了,但还是老报没有引用的错误,而你又没法再次引用,很尴尬。

###问题原因

问题很可能是版本不一致的问题啦。

###解决方案

1,如果你删过之前的项目而没有连同package一并删除,那么很有可能包的引用已经在远端被人改变,和你本地的不兼容,所以小伙子,尝试下还原NuGet包吧

2,如果方法一不能解决,那么定位哪个package有问题,删除出去,然后再从还原后的NuGet包附加的package里重新添加该dll

##4 代码报no reference错误

这个时候最常见的就是空引用的问题。

###问题原因

常见场景是从数据库或者通过某个方法取一个对象,但由于参数或者其它问题,取到的对象为null值,假设这个对象为:

  1. 字典类TML,使用key取值的时候TML[key],就会抛出异常,导致程序中断
  2. 字符串TML,如果调用TML.splite(’.’)或者类似方法的时候,也会抛出异常,导致程序中断

###解决方案

大多数场景,从一个地方拿到一个对象要使用的时候,一定要提前判断该对象是否为null(如果为null采用别的处理方法),如果为null就打印出错误信息,这样不会导致程序中断

if (!string.IsNullOrEmpty(TML))
         {
             string appName = TML.Split('.')[0];
             string entityName = TML.Split('.')[1];                     
         }
 else    {
           logger.Error("执行失败,TML值取到为null");
         }

##5 上下文取不到值了

场景是:在多线程中使用上下文

###问题描述

我们存好上下文后,就觉得全局取用万无一失了,事实上,上下文虽然在全局生效,但是如果你使用了多线程:

前提条件是有个上下文存储应用名。

var appname = ImplementContext.Current.AppName;

function()是这个样子的

function(){
   var appName = ImplementContext.Current.AppName;//这里的appName实际为0;取不到
}

###问题原因

在多线程内部执行的某一个函数,执行过程中,需要赋值操作。

Task task = Task.Factory.StartNew(
              () =>
              {                
                  function()  
              });

###解决方案

实际操作的时候应该在线程内再给上下文赋一次值,

Task task = Task.Factory.StartNew(
              () =>
              {
                  ImplementContext.Current.AppName=appName;   //需要再赋一次值
                  function(appName)  //这里可以用
              });


相关文章
|
5月前
|
程序员 Python
GitHub爆赞!最适合新手入门的教程——笨方法学Python 3
“Python 是一门既容易上手又强大的编程语言。”这句话本身并无大碍,但需要注意的是,正因为它既好学又好用,所以很多 Python 程序员只用到了其强大功能的一小部分。 今天给小伙伴们分享的这份手册以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现。
|
6月前
|
XML Java 数据格式
🚀今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
🚀今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
112 0
|
11月前
|
Java 容器
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
你为什么要学习多线程?是因为理想吗?是因为热爱吗? 哦~原来是为了面试打基础、做准备啊!没错,这真的很现实!
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
|
存储 安全 Shell
极客之命令注入实操第二篇
极客之命令注入实操第二篇
Axure快速入门(完结) -终章总结
Axure快速入门(完结) -终章总结
56 0
|
NoSQL MongoDB Python
不看官方文档,这个问题你可能会束手无策
不看官方文档,这个问题你可能会束手无策
109 0
|
JSON 前端开发 JavaScript
时不我待(第十八课)项目环境搭建
时不我待(第十八课)项目环境搭建
70 0
|
前端开发 JavaScript 程序员
重学JavaWeb第三天(十一)
重学JavaWeb第三天(十一)
82 0
|
SQL 索引
yyds,SQL基础教程,进阶必须(建议收藏!) 下
yyds,SQL基础教程,进阶必须(建议收藏!) 下
114 0
|
SQL
yyds,SQL基础教程,进阶必须(建议收藏!) 中
yyds,SQL基础教程,进阶必须(建议收藏!) 中
124 0
yyds,SQL基础教程,进阶必须(建议收藏!) 中