配置错误 - 未识别的属性 'name' / 无法找到所请求的 .Net Framework 数据提供程序。可能未安装。

3
当尝试在一个实时的网络应用程序中访问我的数据库时,我遇到了以下错误:
服务器错误: '/' 应用程序。 配置错误 描述:在处理所需的配置文件时发生了错误。请查看下面的具体错误详细信息并相应地修改您的配置文件。 解析器错误消息:未识别的属性 'name'。 来源错误: 服务器上发生了应用程序错误。当前此应用程序的自定义错误设置防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以由运行在本地服务器计算机上的浏览器查看。 源文件:C:\home\site\wwwroot\web.config 行:115
我的 web.config 文件,其中第 115 行位于此:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="mssqllocaldb" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" /> // Line: 115
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories>
</system.data>

当我从该行中删除name="MySQL Data Provider"时,我只会得到另一个错误并陷入循环。
当我刷新页面并删除那个name部分时,我会收到以下信息:

无法找到所请求的.Net Framework数据提供程序。可能未安装。

非常感谢您的帮助。

您能使用您的 roomauditsystemomitted 手动登录到数据库吗? - teo van kot
你为什么在“add name=…”中有两个条目? - Gert Arnold
@GertArnold 我不知道,我原以为我知道我在做什么,但我已经转了那么多圈,搞得自己都糊涂了。在安装不同的软件包后,我认为我最终使用了一个较旧的版本,因此我相信我可以删除第一个“add name=…”。 - James
3个回答

2

我曾经遇到过一个非常类似的问题,但是一切方法都没有奏效。最终我通过将.NET框架版本从4.5.2更改为4.5来解决了这个问题。你可以查看这篇文章了解更多信息。


谢谢您的输入,但我仍然遇到相同的错误! - James
在查看了您的“异常堆栈跟踪”之后,我认为您的应用程序某种方式无法访问服务器上的数据库。请仔细检查您的连接字符串是否正确。 - Saurabh Srivastava

1

经过8个小时的努力,我终于解决了这个问题。由于某种原因,在NuGet包管理器中显示我安装的版本是Version=6.9.9.0,所以我添加了:

<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />

我把最新版本的NuGet添加到了我的web.config文件中,但仍然无法正常工作,我尝试了所有可能的方法,重新安装等等,最终我进入了我的bin文件夹,发现实际版本为6.8.3.0,而NuGet显示的是6.9.9.0 - 很奇怪!

我从bin文件夹中删除了这些文件,然后重新安装了最新版本,一切都正常了!


0

我认为名称不应包含空格,并且您有两个名称相同的数据提供程序,因此您的代码应该像这样:

<add name="MySQLDataProvider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  <add name="MySQLDataProvider2" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接