c# - 在 MVC3 中使用 ADO.NET MySQL Provider(无法找到请求的 .Net Framework Data Provider。可能未安装。)

标签 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 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),它运行得很好!有人可以确认这是一个正确的连接字符串吗?

最佳答案

我要回答我自己的问题,因为这浪费了我 3 天的时间来尝试手动配置。

情况

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

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


解决方案

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

您需要将相关 dll 包含在 bin 文件夹中,或者更好的是,使用 Visual Studio SP1 通过右键单击项目 ( there is an option there to create a bin folder containing all of your dlls ) 来创建相关文件夹和引用。确保 MySql.Data.MySqlClient 包含在此文件夹中,如果不包含,您应该能够将其从 bin 文件夹拖到 VS 创建的新文件夹中。

然后您可以使用 nuGet package manager consoleinstall BLToolKit 。这将下载所有丢失的 dll,将它们插入到您的文件夹中并自动正确引用它们。这样,您就可以将 MVC 应用程序部署到可能未安装 MySql.Data(或与此相关的任何其他 dll)的 Web 服务器。

关于c# - 在 MVC3 中使用 ADO.NET MySQL Provider(无法找到请求的 .Net Framework Data Provider。可能未安装。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504958/

相关文章:

c# - 如何为 SslStream.AuthenticateAsServer() 创建证书?

asp.net - 你用什么让 javascript 更像 C# ?

mysql - 学校Mysql上的SQL语句

c# - 关于 Java 和 C# 中访问说明符的混淆

c# - DataGridView:按值传递还是按引用传递?

javascript - 可折叠面板获取状态

php - 选择包含汉字的行

php - 如何在PHP中显示多个数组值?

C# 嵌套类的序列化

c# - ASP.Net Core 2.1 IdentityCore(用户登录时未添加角色声明)