出现错误:“无法连接到任何指定的 MySQL 主机。”在不使用 MySQL 的应用程序中
Posted
技术标签:
【中文标题】出现错误:“无法连接到任何指定的 MySQL 主机。”在不使用 MySQL 的应用程序中【英文标题】:Getting error: "Unable to connect to any of the specified MySQL hosts." In an application that doesn't use MySQL 【发布时间】:2016-11-30 17:44:31 【问题描述】:我们正在将一系列应用程序从旧服务器迁移到新服务器。
在我们的新 DEV 服务器上成功测试此应用程序,然后将代码提升到新的 PROD 服务器后,这将返回错误。在检查了这个应用程序中的数据库代码之后,我确定我们使用的是 SQL Server 而不是 mysql……我有点不明白为什么会发生这种情况。有什么想法或建议吗?
编辑:我让我们服务器的管理员从本地计算机查看此错误,这是真正返回的内容,特别是与服务器上 machine.config 中列出的站点地图提供程序有关...
“/DinglemeyersApplication”应用程序中的服务器错误。
配置错误说明:处理一个错误 服务此请求所需的配置文件。请查看 下面的具体错误详细信息并修改您的配置文件 适当地。
解析器错误消息:无法连接到任何指定的 MySQL 主机。
来源错误:
Line 274: <siteMap>
Line 275: <providers>
Line 276: <add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web,
Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
connectionStringName="LocalMySqlServer" applicationName="/" />
Line 277: </providers>
Line 278: </siteMap>
源文件: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 线路:276 ________________________________________ 版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.1069.1
深入挖掘文件系统日志,我发现完整的堆栈跟踪如下:
System.Configuration.ConfigurationErrorsException:无法连接 到任何指定的 MySQL 主机。 (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 第 276 行)---> MySql.Data.MySqlClient.MySqlException:无法 连接到任何指定的 MySQL 主机。在 MySql.Data.MySqlClient.NativeDriver.Open() 在 MySql.Data.MySqlClient.Driver.Open() 在 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder 设置)在 MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() 在 MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() 在 MySql.Data.MySqlClient.MySqlPool.GetConnection() 在 MySql.Data.MySqlClient.MySqlConnection.Open() 在 MySql.Web.Common.SchemaManager.GetSchemaVersion(字符串 连接字符串)在 MySql.Web.Common.SchemaManager.CheckSchema(字符串连接字符串, NameValueCollection 配置)在 System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType) --- 内部异常结束 堆栈跟踪 --- 在 System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings,类型 providerType) 在 System.Web.Configuration.ProvidersHelper.InstantiateProviders(ProviderSettingsCollection configProviders、ProviderCollection 提供者、类型 providerType) 在 System.Web.Configuration.SiteMapSection.get_ProvidersInternal() 在 System.Web.SiteMap.Initialize() 在 System.Web.UI.WebControls.SiteMapDataSource.get_Provider() 在 System.Web.UI.WebControls.SiteMapDataSource.GetHierarchicalView(字符串 视图路径)在 System.Web.UI.WebControls.HierarchicalDataBoundControl.GetData(字符串 viewPath) 在 System.Web.UI.WebControls.Menu.DataBindItem(MenuItem 项目)在 System.Web.UI.WebControls.Menu.PerformDataBinding() 在 System.Web.UI.WebControls.HierarchicalDataBoundControl.PerformSelect() 在 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() 在 System.Web.UI.WebControls.Menu.EnsureDataBound() 在 System.Web.UI.WebControls.Menu.OnPreRender(EventArgs e) 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(布尔 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest(HttpContext 上下文)在 ASP.default_aspx.ProcessRequest(HttpContext context) 在 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET 文件\dinglemeyersApplication\faeebe62\5126d38e\App_Web_fi2tylhk.5.cs:line 0 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)
【问题讨论】:
在您的项目中搜索“MySQL”。有人在调用 MySQL 驱动... X,不幸的是这是我做的第一件事,源代码没有结果。我什至反编译了依赖项并寻找任何没有结果的 MySQL 引用... :( 你检查过站点地图的配置吗,这似乎是对 MySql 的引用。也许有一个web.sitemap
文件您没有部署,但它一直挂在您部署到的文件夹或 IIS 根文件夹中?
【参考方案1】:
我已经使用 *** 帖子中描述的方法解决了这个问题:
ASP.NET Cannot Find MySQL Host Even Though I'm Not Using MySQL
以前此应用程序没有在 web.config 中定义任何站点地图。通过进入我的 web.config 并添加一个站点地图节点,然后添加一个 <remove name="MySqlSiteMapProvider">
这似乎解决了这个问题。迁移后我将继续测试应用程序,但现在它可以工作了!
在我的 web.config 中:
<system.web>
...
<siteMap>
<providers>
<remove name="MySqlSiteMapProvider" />
</providers>
</siteMap>
</system.web>
【讨论】:
这真的节省了我很多时间.. 这真的对我有用。感谢您提供非常有用的答案。 这正是我首先发布此问题/答案的原因。很高兴为某人节省了时间!!!! 我有一个网站已经运行了好几个月了。突然它停止工作并添加<remove...>
解决了这个问题。这怎么突然变成了一个问题?
查克,不知道什么时候出现的。很高兴它帮助您解决了它!这与我首先发布此内容的原因相同,将站点移动到新服务器并立即失败。也许涉及 IIS 版本的东西会导致这个问题?以上是关于出现错误:“无法连接到任何指定的 MySQL 主机。”在不使用 MySQL 的应用程序中的主要内容,如果未能解决你的问题,请参考以下文章
C# Mono MySql 连接器:无法连接到任何指定的 MySQL 主机
Visual Studio 2010无法连接到MySql服务器