其实敲代码的时间并不是太长,往往调试的时间很长,登录早就敲完了,可是迟迟运行不出想要的结果,甚至不能完整的从U层运行到D层,实在是让人揪心,先后请了三位高手帮我调试,愣是没有发现错误在哪里。
在今天的上午,问题有了转机,终于是将登录完整的运行下来了,也得到了预期的反馈,因此在下午的时候就再次尝试加入配置文件,没想到一个意想不到的警告信息让我相信之前的判断是正确的,于是顺藤摸瓜终于找到了问题的根源,万万没想到,一系列问题的答案竟是如此简单,让人哭笑不得。
先来分析分析报错信息,以便找到解决问题的线索。
我们可以看到出错的地方是工厂类的初始化异常,那么我们到工厂类中看看是什么地方有可能出错
工厂类中使用了反射和配置文件来生成D层的对象,因此可能出错的地方就是这两个地方,于是将配置文件的使用注释掉,直接使用字符串对AssemblyName进行赋值,程序顺利的编译过去了,但是又出现了错误如下:
我们看到还是使用配置文件的地方出错,这也印证了上个错误的根源也是配置文件,当然这只是猜测,并未见到系统报错说是配置文件的问题,请人帮忙也看了配置文件的代码,但是就是没发现哪不对,但是在今天下午尝试使用配置文件来访问数据库时,出现了如下警告信息:
于是乎,可以肯定了出错的原因就是配置文件的问题,突然想到之前曾经总结过反射+抽象工厂+配置文件使用,于是找出以前的实例,打开配置文件对照一下,瞬间明白了真相:
原来真相就是我把appSettings中的S写成了小写的s,改过来之后,程序完美的运行了。难怪高手们都说没见过这样的问题,原来是犯的错太低级,居然是拼写错误,用哭笑不得形容自己的感受实在是不为过。
之前还遇到过两个印象比较深刻的问题:
1. 未能加载文件或程序集“DAL”或其他的某一个依赖项,系统找不到指定的文件
2. “C:\Users\sq\AppData\Local\Temp\.NETFramework,Version=v4.5,AssemblyAttributes.vb”:系统找不到指定的文件
这两个错误是大家比较常见的,也是很大可能遇到的,因此解决办法在网上就有很多了,我在这里就不再赘述了。
总之遇到问题并不是什么坏事,反而是一次很难得的机会,只是在解决之前,尤其是时间久了,就会感觉烦躁,甚至有种“以头抢地尔”的冲动。但是要相信办法总比困难多,一定会有峰回路转的那一刻。
原文:http://blog.csdn.net/lianjiangwei/article/details/38341565