/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

解决IIS ASP.NET 网站发布后出现错误 Unable to connect to any of the specified MySQL hosts

2016-11-19 十有三 0 浏览:1万+ .NET技术 ASP.NET | 异常处理 | 服务器

服务器上安装了MySQL后,发现某些ASP.NET网站打开会出现machine.config配置错误,后来在解决问题的过程中发现,这可能是MySQL的一个BUG,不过倒是有解决的方法,国外很多猿类也遇到这个问题,经过我的研究整理出了几个解决方法,都是十分有效的,主要还是和MySQL Connector/NET这个驱动程序有关系!

先贴下具体的错误信息和截图:

Unable to connect to any of the specified MySQL hosts错误截图

“/”应用程序中的服务器错误。

配置错误

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误消息: Unable to connect to any of the specified MySQL hosts.

源错误:
行 284:    <siteMap>
行 285:      <providers>
行 286:        <add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" />
行 287:      </providers>
行 288:    </siteMap>

源文件: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config    行: 286

版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.1055.0

先简单分析下错误信息,其实可以很直观看出问题出在machine.config中name="MySqlSiteMapProvider"这个节点。这个配置是具体是干啥的我也说不清楚,也是比较懒没去研究。稍微排查下发现在安装MySQL Connector/NET驱动程序时,会自动在machine.config加上这段配置。可以通过web平台安装程序检查下,肯定能找到这个驱动程序:

相关组件

也可以通过控制面板的卸载或更改程序找到:

在卸载程序中找到相关程序

接下来直接列举我整理出的三个解决方法。

方法一:通过web.config移除引发错误的MySqlSiteMapProvider节点

这个方法我比较推荐使用,主要是非常安全,不会影响到IIS上其他网站。在不能随便改动服务器相关配置的情况下十分合适。只要在出问题的网站中,通过在web.config的system.web节点下添加如下配置即可:

<siteMap>
    <providers>
        <removename="MySqlSiteMapProvider"/>
    </providers>
</siteMap>

另外要注意siteMap和providers节点是否存在,如果存在直接添加

<removename="MySqlSiteMapProvider"/>

最后重新启动网站并刷新页面测试下。这种解决方法属于自立自强型,强制排除掉machine.config错误配置的干扰。如果其他网站也有相同问题,依然要按照这个步骤移除错误的配置节点。

这里有四个可供参考的资料:

  1. ASP.NET Cannot Find MySQL Host Even Though I'm Not Using MySQL
  2. Error in MySql host after adding Master page in asp.net c#
  3. Getting error: “Unable to connect to any of the specified MySQL hosts.” In an application that doesn't use MySQL
  4. MySqlSiteMapProvider - Unable to connect to any of the specified MySQL hosts error in .NET website(这个页面可能需要科学上网才能打得开,所以这边也将关键部分截图下)相关博客页面截图

方法二:通过更改MySQL 的.NET驱动程序,禁用Web Providers功能

首先可以肯定的是,这个问题就是由Web Providers功能引起的,删除和禁用后问题解决,可以发现machine.config中出错的配置都会自动删除。

注意:禁用此功能的后果暂时不知,所以如果有在生产环境遇到此问题的,还是小心谨慎的好,需要评估可能产生的风险!!!我是在开发环境中操作的,所以可以很随意。不过好处是可以一步到位,其它也有相同错误的网站就不用按照方法一逐个修改了。

打开控制面板,进入卸载和更改程序的操作界面,如下图所示找到MySQL Connector Net,右键打开选择菜单,点击更改:

步骤一更改相关的驱动程序

在更改界面中将Web Providers禁用掉,点击NEXT并完成剩下的步骤:

步骤二禁用Web Providers

方法三:根据错误信息直接删除machine.config中引发异常的节点

这种方法比较粗糙,注意的地方和方法二一样,一般来说涉及到系统层面的配置修改都要小心,否则会引发一连串的问题。

另外还要注意32位和64位系统的差别,对应的machine.config位置如下:

  • 32位   C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
  • 64位   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

打开machine.config配置文件,并删除如下图中红框里的节点即可(谨慎点可以先注释!):

删除machine.config中出现问题的配置节点


还有建议看下这个帖子,对这个问题很多人都提出了解决方法和自己的见解:ERROR: Unable to connect to any of the specified MySQL hosts.

最后额外提及一个MySql.Web.v20的问题,具体错误和本文提到的问题类似,刚兴趣的朋友可以到MYSQL官网资料查看:Bug #74080

国外也有个哥们也遇到这个问题并写了博客:C# with MySQL Error(2018/04/07 备注:博客已经打不开了)


作者:十有三

出处:https://shiyousan.com/post/636150861315103167

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 使用WEB 平台安装BlogEngine.NET 3.2 后出现HTTP Error 500.19错误
  • 下一篇: 分享outlook红色感叹号/设置重要性的使用技巧

相关文章
  • C# 中使用Task类进行多线程和异步操作
  • 解决Visual Studio Community 2013中文语言包安装失败导致无法使用的问题
  • ASP.NET .exclude 是什么文件?
  • 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题
  • Discuz!NT Flash无法上传头像,点击上传后无任何反应
  • 解决IIS ASP.NET 网站发布后出现错误 Unable to connect to any of the specified MySQL hosts
发表评论
记住昵称

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • VS重构重命名的快捷键
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件

推荐文章

  • 思考ASP.NET网站静态化的利与弊
  • ASP.NET 301跳转或者进行301重定向/转向的方法
  • C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
  • ASP.NET使用rewrite设置重定向出现HTTP 500
  • 解决安卓中Outlook联系人无法同步两个手机号码的问题-手机2无法同步

最新评论

  • 感谢
  • 可乐可乐,谢谢谢谢谢*10086
  • 按上边的2个步骤,没有解决问题。 最后是右键
  • 不错
  • 专门过来看的,讲的很好,学到了很多。

友情链接

  • Passingwind的博客
  • 坤哥网
  • 码友网
  • 王政乔|中国

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号