Asp.Net Ambiguous match found 错误另一种解决方法
发生日期:2016-05-05
错误消息:忘记保留日志文件了,所以,没有。
其他人的解决方法:
http://blog.163.com/zhaowenjia1989@126/blog/static/10949857920111252017412/
查找名称相同,但是,大小写不同的变量或控件,找到后,重命名。
我的开发环境:
文件系统Web方式开发(不是Web App)。
我的发布方式:
连接:文件系统
设置:配置 DEBUG-Any CPU
文件发布选项
在发布前删除所有现有文件
在发布期间预编译(允许更新预编译站点、发出调试信息、不合并)
我的解决过程:
1.按网上说的,查找名称相同变量或控件(并没有解决问题)
a) 将网站出现故障的页面、bin、Web.Config、App_Themes及故障页依赖的控件文件复制到新的网站文件夹(我使用的是Web方式开发,不是Web App);
上图中的EquipmentManage是故障出现页面所在的文件夹,我把整个文件夹都复制过来了;
上图中的RecordManage是故障页面使用用户控件所在的文件夹,我还是整个文件夹复制了;
b) 将新网站中的故障页面aspx文件的Inherits、CodeFile删掉(即排除变量),并发布新网站后测试。
测试没还原问题
c) 将新网站中的故障页面aspx文件还原,再次发布后测试。
测试还是没还原问题。但是,日志报错了。说是,故障页面的类同时存在于多个dll中。
但是,我在解决方案中搜索了故障页面的类,只有一个这样的类。
然后,我检查了发布文件夹,其中有一个dll不存在。
于是,我又检查了zip压缩包,发现两个dll都在。
现在看来,问题的原因可能找到了:我在打包Web时,使用了zip压缩包的方式,并且多次打包使用了一个名称。导致上一次打包的dll文件没有删除(Web方式开发,页面代码编译的dll名称是随机的)。
d) 将压缩包删掉后,重新打包旧网站并部署
页面不再报错
这次问题的总结:
1. 不存在变量或控件名重名的情况
2. 打包时没有删除上次打包的文件,导致类存在于多个dll文件中