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

C# 在MVC3中使用ADO.NET MySQL提供程序(找不到请求的.NET Framework数据提供程序。它可能未安装。),c#,asp.net,mysql,asp.net-mvc-3,ado.net,C#,Asp.net,Mysql,Asp.net Mvc 3,Ado.net,我正在尝试连接到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

我正在尝试连接到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)
我的提供者配置是:

    <add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         autogenerateschema="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>

我的连接字符串是:

<add name="LocalMySqlServer"
     connectionString="Data Source=localhost;user id=web210-aaron;password=tester;database=web210-aaron;"
     providerName="System.Data.MySQLClient"/>


我很确定这是正确的,特别是如果我在本地机器上运行它(将主机更改为服务器IP),它运行得很好!请确认这是一个正确的连接字符串。

您需要先安装此连接字符串

它是一个不同的提供者

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

我将回答我自己的问题,因为这浪费了我三天的时间试图手动配置

处境
  • 您已经创建了一个MVC3/razor(可能是其他c#)应用程序
  • 您正在使用MySql.Data.MySqlClient尝试连接到数据库
  • 您可以从本地计算机上的IDE(如VS2010)连接到本地数据库或服务器上的数据库,但在部署站点时无法连接
  • 部署网站时,会出现以下错误:
    找不到请求的.Net Framework数据提供程序。它可能没有安装。
    
    尝试引用MySql数据库时
问题是您的站点找不到MySQL.Data的引用。


解决方案 在
web.config
文件中有几个部分需要更改,例如
dbProviderFactorys
和创建名称空间。这些可以手动添加,但允许工具为您添加要简单得多

您需要在bin文件夹中包含相关的dll,或者更好的方法是,使用Visual StudioSP1右键单击项目()来创建相关的文件夹和引用。确保MySql.Data.MySqlClient包含在此文件夹中,如果不是,您应该能够将其从bin文件夹拖到VS创建的新文件夹中


然后您可以使用。这将下载任何丢失的DLL,将它们插入到您的文件夹中,并自动正确引用它们。通过这种方式,您可以将MVC应用程序部署到可能未安装MySql.Data(或与此相关的任何其他dll)的web服务器。

您是否添加了对包含
System.Data.MySQLClient
的程序集的引用?我可能不理解您的场景,但当您将提供程序名称更改为System.Data.SQLClient时,它仅显示可能已安装SQL Server提供程序。这并不意味着安装了MySQL提供程序。@MarkWilkins我以为它们都是同一个ADO连接器的一部分?我确实在本地计算机上添加了对程序集的引用,但无法在服务器上安装它。。。我不知道你说的“ADO连接器”是什么意思,但这两个相互竞争的数据库服务器的.NET数据提供程序可能不在同一个安装包中。您当然可以安装这两个软件包,但我认为它总是需要两个独立的安装包。我意识到这一点。但我不拥有服务器,因此无法在其上安装任何东西。帮助人员给我的连接字符串是:
Driver={MySQL-ODBC 5.1-Driver};服务器=本地主机;数据库=web210;用户=web210;密码=;选项=3这显然不起作用当您从“调试”菜单在Visual Studio中本地运行此操作时会发生什么?