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

问题描述 投票:6回答:5

完成ASP.NET MVC 3(找到here)后,我尝试在线发布应用程序。我联系了托管公司,以确定是否可以托管MVC 3应用程序。但我不得不部署(dll文件)应用程序。所以在按照hanselmans blog上的一些步骤后,我会遇到以下错误:

无法找到请求的.Net Framework数据提供程序。它可能没有安装。描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈跟踪:

[ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。] System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)+1420503 System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name)+362 System.Data.Entity.Internal.LazyInternalConnection.Initialize()+49 System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel()+10 System.Data.Entity.Internal.LazyInternalContext.InitializeContext()+265 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)+17 System.Data.Entity.Internal.Linq.InternalSet1.Initialize() +62
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext()+ 15 System.Data.Entity.Infrastructure.DbQuery1.System.Linq.IQueryable.get_Provider() +37 System.Linq.Queryable.OrderByDescending(IQueryable1 source,Expression1 keySelector) +66
MvcMusicStore.Controllers.HomeController.GetTopSellingAlbums(Int32 count) +420 MvcMusicStore.Controllers.HomeController.Index() +47
lambda_method(Closure , ControllerBase , Object[] ) +40
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 parameters)+188 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2参数)+27

任何帮助表示赞赏。

asp.net asp.net-mvc asp.net-mvc-3 deployment
5个回答
12
投票

根据我的经验,该错误意味着web.config中连接字符串上的providerName属性值不正确,或者字面上未安装提供程序。如果您的providerName设置为System.Data.SqlServerCe.4.0(SQL Server Compact),这在开发中并不少见,我可以向您保证它未安装在您的Web主机上;它仅在Visual Studio内部用于开发。您可能只需要将其更改为真正的SQL Server提供程序:System.Data.SqlClient


2
投票

我解决了这个问题。

我在providerName中找到了一个空格。因此,.net框架无法与数据库建立连接字符串。

检查connectionString标记属性值。您的providerName可能没有很好地定义。查找任何空格(因为命名不允许任何空格)并检查providerName值中的额外字符。


1
投票

另一个数据点......

我使用Oracle和实体框架。我安装了Oracle ODP.NET,托管驱动程序来解决这个问题。在NuGet包管理器中输入

Install-Package Oracle.ManagedDataAccess

它将使用适当的程序集信息和DbProviderFactories更新App.config。我正在使用VS 2015,Entity Framework 6.我还安装了Oracle Developer Tools。


0
投票

我遇到了类似的问题..并且有非常有趣的解决方案..只需查看你的ConnectionString - 如果它与你用于其他ASP.Net应用程序的相同,那么它不应该是......实体框架完全不同的情况

<add name="EmployeeContext" connectionString="Server=.\SQLEXPRESS;Database=DB1;User Id=user1;password=password1;" providerName="System.Data.SqlClient**;**" />

将其更改为 -

<add name="EmployeeContext" connectionString="Server=.\SQLEXPRESS;Database=DB1;User Id=user1;password=password1;" providerName="System.Data.SqlClient"/>

你能找出差异......只有一个小 - 没有';'在ProviderName的末尾..是的,这有所不同..它应该与ProviderName的相同副本相同,但我没有检查区分大小写。但这解决了我的问题


0
投票

错误是完美的,上面的评论很好,但在我的情况下,我在web.config文件中拼写错误的提供程序:System.Data.SqlClinet不是System.Data.SqlClient

© www.soinside.com 2019 - 2024. All rights reserved.