今天早晨调试一个程序时,便宜过程出现外部组件发生异常错误,因为该错误无错误行号等信息,一时竟不知道错误来自哪里,只好求助网络,搜索后发现下面提示:
今天一个 ASP.NET 程序编译时发生错误:
外部组件发生异常。
但是并没有对应的详细信息,和错误的行号等信息,很难排查。
经过一段时间的检查,发现原因出在一个 User Control 后台代码中的引用不知何故写成了:
using System.Windows.Forms;
这样该 UserControl 的页面基类就变成了 System.Windows.Forms.UserControl. 奇怪的是,用 "Build Page" 对该用户控件进行编译时,竟提示成功。而编译整个网站则出错。
上述错误信息中的“外部组件”应该是从引用了该用户控件的页面角度而言的,对他来说这个用户控件就是“外部组件”。
看过上面后,虽然跟我的并不相符,因为我并没有修改用户控件,昨天还好好的呢,但是也给了些提示,从用户控件入手,因为本人的主要控件有几个,但是很多的页面都引用了, 无从下手,于是,把一部分页面剪切走,剩下只有很少用户控减的页面,在分别执行,然后在逐步添加回剪切走的页面,最后发现当某一个控件出现时候该问题再次出现,于是打开该用户控件,找毛病,可是一样,都是没进行过任何修改过的,于是,一部分注释掉,找出问题的那部分,最后奇怪的是 当把注释的部分都还原后,一切都正常了,所有被剪切走的也面放回来后也都正常了,
虽然问题糊里糊涂的解决了,可也算是给自己,以后遇到此类问题的解决方向也有点提示吧,至于为啥不做任何修改问题解决,还望高手解释.
接上面,正当以为问题解决的时候这个错误象幽灵一个再次出现,修改如下:
1.两个用户控件名字一样,虽然路径不同,,
2.发现注释掉几个也面和其中一个类后错误不再出现,经过检查该类,发现该类引用了web.config中几个<add key="" value="" />,而这些东西在web.config中是尚未建立的,这样,就好解决了,建立上着几个,把注释的也面注释去掉,
然后重新编译,问题解决.
可见,该问题是用户控件有问题、引用了没有的东西或者引用了别人的东西,而该东西不存在等原因造成