在MVC3中使用ADO.NET MySQL提供程序(无法找到请求的.Net Framework数据提供程序。可能未安装。)

我试图连接到我的Web服务器上的mysql数据库,但我一直得到:

Unable to find the requested .Net Framework Data Provider. It may not be installed. 

我猜测ADO.NET连接器存在,因为如果我将配置更改为:

 providerName="System.Data.SQLClient" 

我明白了:

 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 

我的提供者配置是:

    

我的连接字符串是:

  

我很确定这是正确的,特别是如果我从本地机器运行它(将主机更改为服务器IP)它运行完全! 有人可以确认这是一个正确的连接字符串。

我将回答我自己的问题,因为这浪费了我生命中的3天试图手动配置。

情况

  • 您已经创建了一个MVC3 / razor(可能是其他c#)应用程序
  • 您正在使用MySql.Data.MySqlClient尝试连接到您的数据库
  • 您可以从VS2010等IDE从本地计算机连接到服务器上的本地数据库或数据库,但在部署站点时无法连接
  • 部署Web站点时,会出现此错误: Unable to find the requested .Net Framework Data Provider. It may not be installed. Unable to find the requested .Net Framework Data Provider. It may not be installed. 在尝试引用MySql数据库时

问题是您的站点找不到对MySQL.Data的引用。


您的web.config文件中有几个部分需要更改,例如dbproviderfactories和创建命名空间。 这些可以手动添加,但允许工具为您执行此操作要简单得多。

您需要在bin文件夹中包含相关的dll或者更好,使用Visual Studio SP1通过右键单击项目来创建相关的文件夹和引用( 有一个选项可以创建包含所有dll的bin文件夹 ) 。 确保MySql.Data.MySqlClient包含在此文件夹中,如果不是,您应该能够将它从bin文件夹拖到由VS创建的新文件夹中。

然后,您可以使用nuGet包管理器控制台来安装BLToolKit 。 这将下载任何缺少的dll,将它们插入到您的文件夹中并自动正确引用它们。 这样,您可以将MVC应用程序部署到Web服务器,其中可能未安装MySql.Data(或任何其他dll)。

您需要先安装此function

http://dev.mysql.com/downloads/connector/net/1.0.html

它是一个不同的提供商

http://dev.mysql.com/downloads/connector/net/#downloads

然后通过Visual Studio添加您的数据源,它将为您更改app.config