【遇坑记实 二】小坑合集

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

##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)  //这里可以用
              });


相关文章
|
2月前
|
缓存
Autojs4.1.0实战教程---彩蛋视频功能合集
Autojs4.1.0实战教程---彩蛋视频功能合集
38 0
|
2天前
|
C++ Python
《从零开始学Python》(第二版) PDF下载读书分享
Python,由Guido van Rossum创造(1989),是1991年发布的面向对象、解释型编程语言,以其简洁清晰的语法和强大的库著称,昵称“胶水语言”。它连接不同模块,强调代码的优雅、明确和简单。《从零开始学Python》(第二版)是本风趣、实践导向的教材,提供PDF下载,是学习Python的宝贵资源。![书封](https://ucc.alicdn.com/pic/developer-ecology/nrw3f3oqlpmag_40f357729aac4defa97fb1e0f66a2501.png)
14 1
《从零开始学Python》(第二版) PDF下载读书分享
|
24天前
|
存储 人工智能 缓存
程序员应该学习的 10 件事(完整版)
程序员应该学习的 10 件事(完整版)
|
25天前
|
算法 Java 开发工具
合集:编程相关的网站及书籍
合集:编程相关的网站及书籍
|
2月前
|
数据可视化 程序员 Linux
小白安装labelimg常见问题及其原因(带知识点理解)
小白安装labelimg常见问题及其原因(带知识点理解)
|
2月前
|
小程序 程序员 开发者
Python学习心得——小白的成长之路
Python学习心得——小白的成长之路
134 0
|
2月前
|
存储 开发工具 文件存储
Python的核心知识点整理大全66(已完结撒花)
Python的核心知识点整理大全66(已完结撒花)
84 4
|
8月前
Axure快速入门(完结) -终章总结
Axure快速入门(完结) -终章总结
38 0
|
NoSQL MongoDB Python
不看官方文档,这个问题你可能会束手无策
不看官方文档,这个问题你可能会束手无策
85 0
|
SQL 数据库
实战:第二章:关于EZDML工具使用踩的坑
实战:第二章:关于EZDML工具使用踩的坑
152 0