完成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.InternalSet
1.Initialize() +62
1.get_InternalContext()+ 15 System.Data.Entity.Infrastructure.DbQuery
System.Data.Entity.Internal.Linq.InternalSet1.System.Linq.IQueryable.get_Provider() +37 System.Linq.Queryable.OrderByDescending(IQueryable
1 source,Expression1 keySelector) +66
2 parameters)+188 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2参数)+27
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
任何帮助表示赞赏。
根据我的经验,该错误意味着web.config中连接字符串上的providerName
属性值不正确,或者字面上未安装提供程序。如果您的providerName
设置为System.Data.SqlServerCe.4.0
(SQL Server Compact),这在开发中并不少见,我可以向您保证它未安装在您的Web主机上;它仅在Visual Studio内部用于开发。您可能只需要将其更改为真正的SQL Server提供程序:System.Data.SqlClient
。
我解决了这个问题。
我在providerName中找到了一个空格。因此,.net框架无法与数据库建立连接字符串。
检查connectionString标记属性值。您的providerName可能没有很好地定义。查找任何空格(因为命名不允许任何空格)并检查providerName值中的额外字符。
另一个数据点......
我使用Oracle和实体框架。我安装了Oracle ODP.NET,托管驱动程序来解决这个问题。在NuGet包管理器中输入
Install-Package Oracle.ManagedDataAccess
它将使用适当的程序集信息和DbProviderFactories更新App.config。我正在使用VS 2015,Entity Framework 6.我还安装了Oracle Developer Tools。
我遇到了类似的问题..并且有非常有趣的解决方案..只需查看你的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的相同副本相同,但我没有检查区分大小写。但这解决了我的问题
错误是完美的,上面的评论很好,但在我的情况下,我在web.config文件中拼写错误的提供程序:System.Data.SqlClinet不是System.Data.SqlClient