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

Asp.net 找不到请求的.Net Framework数据提供程序。它可能没有安装,asp.net,asp.net-mvc,asp.net-mvc-3,deployment,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Deployment,在完成ASP.NET MVC 3(find)之后,我尝试在线发布该应用程序。我联系了托管公司以确定是否可以托管MVC3应用程序。但是我不得不部署(dll文件)应用程序。因此,在执行了一些步骤之后,我遇到了以下错误: 找不到请求的.Net Framework数据提供程序。它可能没有安装。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 异常详细信息:System.ArgumentException:找不到 请求的.Net Framewor

在完成ASP.NET MVC 3(find)之后,我尝试在线发布该应用程序。我联系了托管公司以确定是否可以托管MVC3应用程序。但是我不得不部署(dll文件)应用程序。因此,在执行了一些步骤之后,我遇到了以下错误:

找不到请求的.Net Framework数据提供程序。它可能没有安装。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

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

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[ArgumentException:找不到请求的.Net Framework数据 提供程序。可能未安装它。]
System.Data.Common.dbProviderFactorys.GetFactory(字符串 providerInvariantName)+1420503
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(字符串 名称)+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(类型 entityType)+17
System.Data.Entity.Internal.Linq.InternalSet
1.Initialize()+62
System.Data.Entity.Internal.Linq.InternalSet
1.get\u InternalContext() +15 System.Data.Entity.Infrastructure.DbQuery
1.System.Linq.IQueryable.get_Provider()
+37 System.Linq.Queryable.OrderByDescending(IQueryable
1源代码,表达式
1键选择器)+66
MvcMusicStore.Controllers.HomeController.GetTopSellingAlbums(Int32 计数)+420 MvcMusicStore.Controllers.HomeController.Index()+47
lambda_方法(闭包、控制器库、对象[])+40
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,对象[]参数)+17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary
2个参数)+188
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor ActionDescriptor,IDictionary`2 参数)+27


非常感谢您的帮助。

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

我解决了这个问题

我在providerName中找到一个空格。因此,.net framework无法使用数据库创建连接字符串

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

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

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

将其更改为--


你能辨别出区别吗。。只有一个小的——没有“;”在ProviderName的末尾。。 是的,这就不同了。。它应该与ProviderName的同一个副本相同,尽管我没有检查大小写敏感度。但这解决了我的问题

另一个数据点

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

Install-Package Oracle.ManagedDataAccess

它将使用适当的程序集信息和DBProviderFactorys更新App.config。我使用的是VS 2015,实体框架6。我还安装了Oracle开发人员工具。

错误很完美,上面的注释也不错,但在我的例子中,我在web.config文件中把提供者拼写错了:System.Data.SqlClinet不是System.Data.SqlClient

您使用实体框架吗?是的,这正是教程中提到的。您是否将Copy Local=True添加到实体框架引用中?我对此不熟悉。但它已设置为True。请验证连接字符串,以确保服务器名称和身份验证信息正确无误。这是我的问题,这篇文章帮助我理解了我的问题。嗨@Jeff。在IIS 8.5中部署站点时,我目前面临相同的问题。你能检查一下这个吗。感谢您的宝贵建议。
Install-Package Oracle.ManagedDataAccess