此错误信息我查过很多资料,大部分资料介绍的信息都是互相拷贝的。按照上面的解决办法执行解决不了问题。
他们说的解决方法好像没有讲到本质问题。都是肤浅的掠过问题。
以下是网上流行的解决方法:(本人尝试后没有解决问题,大家看后试试。)
1. 首先检查你的WEB.CONFIG文件是否正确,配置文件不对也会出现类似问题。
下面是Logging 和 Data Application Block 的配置,可供参考:
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
如果配置文件正确,那就是DLL引用问题,你配置文件与你引用的DLL不匹配。
2. 是不是数字签名不匹配引起问题。
网上说改为PublicKeyToken=null就可以了。
我以前的访问数据库时就是这样设定的,是带有PublicKeyToken 的。
原因:PublicKeyToken=null时,DLL是没有数字签名的,但如果直接引用安装企业库时生成的DLL就不匹配了,因为安装生成的DLL是签了名的。
这时要引用通过自己电脑编译时生成的企业库DLL,它是没有签名的。配置文件有PublicKeyToken=31bf3856ad364e35 时就要引用安装时产生的DLL,如果引用自己编译生成的DLL就会不匹配,然后报异常。
自己电脑编译时生成的企业库DLL是指打开企业库源码然后编译企业库,在DEBUG BIN目录下的DLL文件。
如果希望带有 PublicKeyToken=31bf3856ad364e35,解决办法如下。
解决:直接从安装目录(一般为C:\Program Files\...)中引用DLL。
在我浏览大量资料后发现,确认是引用版本和 web.config 里面配置的版本信息不一致造成的。
然后本人就在配置文件中做以下修改:
1。PublicKeyToken=31bf3856ad364e35 修改为PublicKeyToken=NULL
2。把版本信息修改为 所引用dll一样的版本号。
3。以上两步修改应该注意:
不仅要在节点:<section name="loggingConfiguration" ....>和<section name="dataConfiguration" .....>里面修改上两步操作。
在<loggingConfiguration name="Logging Application Block" tracingEnabled="true"...........>里面涉及到的也应该做修改。
本人尝试后问题解决。测试OK.
这个结论拿出来分享下,希望对大家有用......