嗨,这是我第一次在远程服务器上发布一个带有实体框架的项目。页面工作正常,但当我尝试访问我的保留区域,所以,阅读dabatase,我得到此错误
无法找到请求的.Net Framework数据提供程序。它可能没有安装。
说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[ArgumentException:无法找到请求的.Net Framework数据 供应商。它可能没有安装。]
System.Data.Common.DbProviderFactories.GetFactory(字符串 providerInvariantName)+1402071
System.Data.EntityClient.EntityConnection.GetFactory(字符串 providerString)+35[ArgumentException:找不到指定的商店提供商 配置,或无效。]
System.Data.EntityClient.EntityConnection.GetFactory(字符串 providerString)+62
System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串 newConnectionString)+263
System.Data.EntityClient.EntityConnection..ctor(字符串 connectionString)+81
System.Data.Objects.ObjectContext.CreateEntityConnection(字符串 connectionString)+42
System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)+16
shield_trust.db_shieldtrustEntities..ctor()in d:\信任公司\ shield_trust \ shield_trust \ POCO.Context.cs:23
shield_trust.user_login.check_login()in d:\信任公司\ shield_trust \ shield_trust \ user_login.aspx.cs:65
shield_trust.user_login.entraButton_Click(Object sender,EventArgs e) 在D:\ trust-company \ shield_trust \ shield_trust \ user_login.aspx.cs:25
System.Web.UI.WebControls.Button.OnClick(EventArgs e)+118
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 eventArgument)+112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)+10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) 5563
我必须将一些dll复制到我的bin文件夹中或修改我的web.config?
答案 0 :(得分:14)
尝试运行此命令以获取已安装的提供程序列表,并检查您的提供程序是否存在:
// This example assumes a reference to System.Data.Common.
static DataTable GetProviderFactoryClasses()
{
// Retrieve the installed providers and factories.
DataTable table = DbProviderFactories.GetFactoryClasses();
// Display each row and column value.
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Console.WriteLine(row[column]);
}
}
return table;
}
更新:您需要在目标计算机上安装MySQL提供程序,它被称为“MySQL Connector Net x.x.x”,您可以从this website获取
答案 1 :(得分:10)
使用我们的应用程序(ASP.NET,测试,Windows服务),我们必须将以下内容添加到我们的app.config或web.config文件(在configuration
节点内)以实现此目的工作:
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<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.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
答案 2 :(得分:4)
对于我们来说,这是32比64进程。 服务器是64位。 安装的ODP.NET(Oracle客户端)也是64位。 我们的应用程序使用Target平台和#34;任何CPU&#34;和#34;喜欢32位&#34;标志SET:
以32位进程运行。 一旦用未经检查的标志重新编译,一切都开始起作用了。
答案 3 :(得分:3)
如果您收到如下对话框......
&#34;无法找到请求的.NET Framework数据提供程序。它可能没有安装&#34;
查看以下位置的machine.config文件......
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
删除所有空
"DbProviderFactories" nodes.
答案 4 :(得分:2)
令人尴尬的是,我花了三天时间试图解决这个错误。我的“connectionString”
上的“providerName”属性不正确更改自:
<configuration>
<connectionStrings>
<add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="System.Data.MySqlClient" />
</connectionStrings>
</configuration>
为:
<configuration>
<connectionStrings>
<add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
</configuration>
我指定了System.Data.MySqlClient
而不是Mysql.Data.MySqlClient
德哦!
答案 5 :(得分:1)
当连接到数据库时,所谓的“数据提供者”用于抽象实现。
您的异常似乎表示目标计算机上不存在给定的数据提供者。您在部署的环境中使用哪个数据库?检查web.config连接字符串以获取详细信息。
您可能必须自己在该计算机上安装给定的数据提供程序(一次),以便可以从全局程序集缓存(GAC)中获取。
答案 6 :(得分:0)
我知道这是旧的,但正如 udog 所解释的那样,错误消息&#34;指定的商店提供商在配置中找不到,或者无效&#34;表明问题所在。因此,根据后端数据库,将提供程序信息添加到配置文件中。如果已经添加,请确保它是正确的。对于oracle,如果使用EF和oracle.DataAccess的托管提供程序,它将看起来像这样。请注意您的oracle DLL版本可能不同。
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.MaanagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
答案 7 :(得分:0)
要进一步构建udog的答案,如果您要使用此数据提供程序在服务器上拥有多个应用程序,那么将它添加到machine.config文件可能更有意义。
正如Thomas所说,machine.config文件位于:
C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \配置 C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \配置
machine.config条目类似于web.config条目:
<system.data>
<DbProviderFactories>
<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.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
注意:如果您的应用程序位于多个服务器上(例如QA /测试服务器和生产服务器)并且您只在其中一个服务器上出现此错误,我建议您在machine.config文件之间执行文件dif看看服务器之间是否存在差异。
答案 8 :(得分:0)
当我尝试在个人PC上安装独立工具时遇到了相同的错误。我执行了以下步骤。NETFramework 2.0和3.0)。NETFramework 4.7高级服务已重新安装,但在最终使用此简单的修复过程之前,无法解决问题。 下载并安装SSCERuntime_x64-ENU.exe 按照此链接下载https://www.microsoft.com/en-us/download/details.aspx?id=30709 祝你好运。
答案 9 :(得分:0)
添加到Web.config中的语句对我有所帮助。
<system.data>
<DbProviderFactories>
<clear />
<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.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>