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文件中

 

posted @ 2016-05-05 15:32  次奥君  阅读(1094)  评论(0编辑  收藏  举报