21

从数据库获取提供者信息时出错。这可能是由 Entity Framework 使用不正确的连接字符串引起的。检查内部异常以获取详细信息并确保连接字符串正确。

内部异常:{"The provider did not return a ProviderManifestToken string."}

我搜索了其他线程,因为有很多类似的错误,但我似乎找不到解决方案。

我正在使用 VS2012 Professional 和 SQL Server 2012。我可以使用 Windows 身份验证使用服务器资源管理器连接到服务器。我正在构建一个具有多层的网络表单应用程序。其中之一包含我的实体框架层,其中包含我的 Context 类。

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

  <connectionStrings>
    <add name="MYSQLSERVER"
         providerName="System.Data.SqlClient"
         connectionString="Data Source=myComputer\MYSQLSERVER;Trusted_Connection=true"></add>
  </connectionStrings>
</configuration>

这就是我的实体框架类库层中的 app.config 的样子。

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

另外,我尝试将 app.config defaultConnectionFactory 类型更改为

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">

但它没有改变任何东西。

我不确定我所做的任何改变意味着什么让我担心。当然,我可以在网上找到解决方案并解决了我的问题,但我真的很想了解 web.config 以及这一切意味着什么。除了找到解决此问题的方法之外,任何人都可以指出我学习 web.configs 的正确方向吗?

提前感谢您的帮助。

4

12 回答 12

10

就我而言,是我的 SQL Server 实例没有运行。我只是启动了服务,一切正常。希望这对未来的人有所帮助。

于 2014-05-07T04:31:42.980 回答
7

我也遇到了这个错误,我解决了降级这些 NuGet 包的问题

MySql.Data - 6.9.12

MySQL.Data.Entity - 6.8.8

这是我引用的参考URL

于 2019-01-08T10:16:50.437 回答
4

好吧,我修好了。

只需要放“。” 对于数据源中的localmachine如下:

<add name="MYSQLSERVER"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=.\MYSQLSERVER;Trusted_Connection=true"></add>    
</connectionStrings>
于 2013-10-01T21:02:55.250 回答
4

这是另一个可能的原因:
我在 AWS 上有我的(ASP.NET)HTTP 服务器和 MySQL/Aurora 服务器(了解 AWS 不是 OP 评论的一部分)。
我的桌面(实际上是我们大楼的)IP 在 MySQL/Aurora 服务器的安全组中被列入白名单,因此一切都非常适合开发。
但是 ASP.NET 服务器的 IP没有被列入 MySQL/Aurora 实例的白名单,因此 ASP 服务器的 EF 连接请求被拒绝,导致了该线程顶部提到的异常。
深奥,但也许这对某人有帮助。

于 2016-01-22T21:52:08.877 回答
1

对我来说,这就是以下所有内容。1. DB不允许连接到我的开发环境。可能是防火墙限制。2. 连接字符串的数据库凭据错误。所以一般来说,不正确的连接字符串。

于 2019-06-24T18:07:16.100 回答
0

当我尝试连接到mysql时遇到这个问题,原因是我忘记在“connectionStrings”中添加“密码”

于 2015-09-04T02:41:17.640 回答
0

在我的情况下,参数是 v12.0,我改为 v11.0,它正在工作

于 2017-03-26T17:32:27.357 回答
0

我有同样的问题,用包管理器重新安装 Npgsql 就可以了。似乎是版本控制问题。

于 2018-02-05T17:35:24.720 回答
0

对我来说,它在服务器和实例之间使用双反斜杠,例如 .\SQLExPRESS;...等。

更正是使用 .\SQLEXPRESS

希望它可以帮助某人。

于 2018-09-21T00:13:57.490 回答
0

对于那些最近得到这个的人,在更新到 MySql.Data 8.0.19 时,您还必须更新对 EntityFramework 的引用,Oracle 更改了包,现在是 MySql.Data.EntityFramework 而不是 MySql.Data.Entity 或 MySql.Data.Entities . 给 David Sekar 的建议:https ://davidsekar.com/asp-net/mysql-error-the-provider-did-not-return-a-providermanifesttoken

于 2020-03-10T20:37:36.937 回答
0

我经常忘记为什么这个错误经常出现。对我来说,通常我已经更改了数据库的凭据,并且没有在代码部分进行相同的更改。以防万一我再来这里提醒自己。

于 2021-06-09T05:37:45.510 回答
-1

..和最后(?!?)不要忘记构建您的项目并选中“首选 32 位”,因为这将消除生成此错误消息的已知错误(具有内部异常消息 = '算术溢出')

于 2015-06-09T06:15:44.423 回答