架构师_程序员

查看: 78|回复: 0

[已解决] .NET的MySQL连接器冲突DbProviderFactories(.NET MySQL连接器冲突DbP...

[复制链接]
发表于 2020-11-11 09:11:52 | 显示全部楼层
本帖最后由 QWERTYU 于 2020-11-11 09:14 编辑

情景:
使用mysql数据库开.net项目,本地开发环境安装了.NET MySQL连接器,一切运行正常,但是发布到iis,程序异常,报错信息如下:
异常信息:
System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.<GetService>b__0--->异常信息:具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常。
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
查找问题:
发现服务器没有安装.NET MySQL连接器,因为mysql使用的是阿里云的云数据库,服务器也有多台,为了避免在每台服务器上安装.NET MySQL连接器,为此,我确保将MySQL引用设置为“本地复制”,以便将它们复制到bin文件夹,并将以下内容添加到我的app.config中:
添加以上配置后,服务器上可以正常工作,并且无需在服务器上安装MySQL连接器即可部署应用程序,但是现在我的本地开发机(已安装了MySQL连接器)上出现了问题,当我尝试EF时遇到此错误连接:
异常信息:
System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.<GetService>b__0--->异常信息:具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常。
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
尝试操作:
如果我注释掉上面在config中添加的XML,该错误就会消失。这可能是因为同一驱动程序已安装在系统上并且位于machine.config中。
最终解决方案及原因:
尝试在您的webconfig中添加<remove invariant =“ MySql.Data.MySqlClient” />。在您的计算机上,您已经安装了MySql连接器,并且通过在DbProviderFactories中添加一项来修改您的machine.config。因此,如果您在web.config中放入另一个MySql数据提供程序,就好像您尝试两次注册相同的东西一样。











上一篇:C# 通过 probing 将引用类库 dll 放到子文件夹
下一篇:ASP.NET Core 链路追踪(三)SkyAPM 基于 Consul 动态配置
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-11-27 07:11

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表