首页 > 编程知识 正文

【C#】Entity异常导致WCF基础提供程序在open上失败

时间:2023-05-03 17:57:23 阅读:209190 作者:2171

事情是这样的,因为业务和员工离职方面的原因,被安排到做服务器更改。于是,在阿里云购买了相同参数和配置的新服务器之后,决定搭建新的软件运行环境。由于架构是前台界面加上后台服务采用的WCF,于是,将运营环境以及数据库安装好了之后,便开始着手安装后台WCF服务。

 

步骤完全参照上一篇文章,点击打开链接,一步步安装配置好WCF组件。紧接着便将WCF后台程序部署到了IIS上面,想来应该没什么问题了,通过浏览器打开该后台服务的WCF部署程序地址,可以看到WSDL地址,及其该页面的函数内容申明等信息。但是前台调用就是不成功,又没有发现任何问题,于是,用WCF客户端测试工具测试,也一样无法成功调用。报错如下图:

 

接下来,又写了个控制台程序,添加WCF后台引用,想看看是不是WCF测试工具出现了问题,或者是IIS配置原因,以便将这两种情况排除。基于此,随便写了简单代码调用了某个接口,一切一如平常无喜,失败了,报错如下图:

基础提供程序在open上失败,直接百度WCF的相关错误,没有找到想要的结果。于是去掉“WCF”关键字,直接搜索。发现大多是发生在Entity Framework有关情况的报错。

 

最后联想一下,自己两个服务器的配置哪里不同,发现也就mysql版本从5.6.17,升级变更到了5.6.40。至于为什么没有安装5.6.17,是因为当时安装时报错,进行到安装mysql主程序时失败,有的相关插件反倒安装成功了。以为是拷贝的安装包有什么问题,于是从官网下载5.6版本程序,发现只有5.6.40版本,没有5.6.17版本。没有在意那么多,就安装了。安装一切顺利,没有出现任何问题,就是安装完之后打开程序,出现了如下的报错警告:

当时没有在意,点击"OK"之后继续。因为如果正如提示所说,不支持的话,也就不会安装成功了,并且使用过程中,一切如旧,没有任何问题,跟之前的5.6.17一模一样。后来才突然想起来,这才是导致"基础提供程序在open上失败"的qfdlz。

 

正如前面的搜索结果类似,这个报错大多发生在Entity Framework使用时,而Entity Framework就是数据库关系对象映射,也就是在和数据库映射时出现错误,而mysql并不是微软体系,在Entity Framework本身的各数据库支持性中,肯定没有对sql sever支持地好,应该是对mysql5.6.40的支持性不够,或者是对不完整的该版本的出错安装,不能够实现完成支持或映射关系,导致后台代码调用数据库对象时,报错“基础提供程序在open上失败”。

 

最后,既然找到了原因,便有了解决方式,不过这里的解决方式,不是具体的解决方法,采用了重装mysql得以解决。刚开始重装mysql5.6.17还跟之前一样失败,后面跟阿里云售后小哥反馈了下,他也提到可能是数据库问题,但没有说具体解决措施,也没帮着处理。第二天,重装mysql5.6.17后就成功了,该问题离奇地得到了解决。推测原因是因为Mysql对C#的兼容性问题,开发时用的是5.6.17版本,涉及的mysql-connector-net版本就是这个,而后面安装的Mysql数据库版本,里面自带的mysql-connector-net版本不一致,由于mysql-connector-net版本兼容性问题,并不一定会兼容以前的版本,导致EF映射数据库出现问题,而重装后版本一致此问题得到了解决。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。