提供程序未返回 ProviderManifestToken 字符串 Entity Framework。

23

从数据库获取提供程序信息时发生错误。这可能是因为Entity Framework使用了不正确的连接字符串引起的。检查内部异常以获取详细信息,并确保连接字符串正确。

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

我在其他线程上搜索了许多类似错误的情况,但似乎找不到解决方案。

我正在使用VS2012专业版和SQL Server 2012。我能够使用Windows身份验证通过服务器资源管理器连接到服务器。我正在构建一个包含多个层次结构的WebForms应用程序。其中之一包含我的Entity Framework层,其中包含我的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>

这是我 Entity Framework 类库层中的 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.config的正确方向吗?

提前感谢您的帮助。


是的,我遇到了这个问题,显然只是因为服务器名称不正确。 - Hot Licks
12个回答

10
在我的情况下,是我的SQL Server实例没有运行。我只需启动该服务,一切就正常工作了。希望这能帮助到后来的人。

在我的情况下也是类似的,mysql正在运行,但是我的数据库没有被创建(由于之前重新安装的原因)。 - MusicAndCode

7
我也遇到了这个错误,我通过降级这些NuGet包来解决它。

MySql.Data - 6.9.12

MySQL.Data.Entity - 6.8.8

这是我参考的URL

4

好的,我来翻译一下。

嗯,问题已经解决了。

只需要在数据源中加上"."作为本地机器即可,具体如下:

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

4
这里有另一个可能的原因:
我将我的(ASP.NET)HTTP服务器和MySQL/Aurora服务器都放在AWS上(了解到AWS不是OP评论的一部分)。
我的桌面电脑(实际上是我们大楼的)IP已被列入MySQL/Aurora服务器的安全组白名单,因此一切都很完美适用于开发。
但ASP.NET服务器的IP并未被列入MySQL/Aurora实例的白名单中,因此ASP服务器的EF连接请求被拒绝,而这就导致了本主题顶部所述的异常。
虽然比较深奥,但也许可以帮助某些人。

1
我自己也遇到了这个确切的问题。 - dlchambers

3

1
对我来说,主要原因如下: 1. 数据库无法连接到我的开发环境。可能是防火墙限制。 2. 连接字符串中的数据库凭据不正确。 总的来说,是由于连接字符串错误导致的。

0

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

正确的方法是使用.\SQLEXPRESS

希望能帮到有需要的人。


0
在我的情况下,参数是v12.0,我改成了v11.0,现在它可以工作了。


0

当我尝试连接到MySQL时,遇到了这个问题,原因是我忘记在“connectionStrings”中添加“password”。


我遇到了同样的问题,当我看到你的提示时解决了它。我忘记了密码,提供者的连接字符串没有包含它,只有一个占位符,我必须用我的密码替换它 :-) - Frank Odoom

0

我遇到了相同的问题,通过包管理器重新安装Npgsql解决了问题。似乎是版本问题。


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