2013-04-23 36 views
6

ASP.NET MVC 3'ü tamamladıktan sonra (here'u bulun), uygulamayı çevrimiçi yayınlamayı denedim. MVC 3 uygulamalarını barındırmak mümkün olup olmadığından emin olmak için hosting şirketi ile iletişime geçtim. Ancak (dll dosyaları) uygulamasını dağıtmak zorunda kaldım. Yani hanselmans blog bazı adımları izledikten sonra, aşağıdaki hata takılıp alıyorum:İstenen .Net Framework Veri Sağlayıcısı bulunamadı. Yüklenmeyebilir

Unable to find the requested .Net Framework Data Provider. It may not be installed. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.]
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
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() +15 System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() +37 System.Linq.Queryable.OrderByDescending(IQueryable 1 source, Expression 1 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 parameters) +27

Herhangi bir yardım takdir edilmektedir. Benim deneyim

+0

Entity Framework kullanıyor musunuz? – mattytommo

+0

Evet, eğitimde belirtilenler tam olarak budur. – SamekaTV

+1

Kopyala Local = Doğru Öğe Referansı referansı eklediniz mi? – mattytommo

cevap

11

, o hata web.config bağlantı dizesi providerName özelliğinin değeri yanlış ya anlamıyla yüklenmemiş sağlayıcı ya olduğu anlamına gelir. providerName, geliştirme aşamasında nadir olmayan System.Data.SqlServerCe.4.0 (SQL Server Compact) olarak ayarlanmışsa, web sunucunuzda yüklü olmadığını garanti edebilirim; Sadece geliştirme için Visual Studio'nun içinde kullanılır. Muhtemelen gerçek bir SQL Server sağlayıcısına değiştirmeniz gerekiyor: System.Data.SqlClient.

+1

Sunucu adının ve kimlik doğrulama bilgilerinin doğru olduğundan emin olmak için bağlantı dizginizi doğrulayın. –

2

Sorunu çözdüm.

SağlayıcıAdı alanında boşluk buluyorum. Yani, .net framework veritabanı ile bağlantı dizesini tahmin edemez.

BağlantıString tag attribute değerini kontrol edin. sağlayıcınızAdı iyi tanımlı olmayabilir. , sağlayıcıAdı değerinde herhangi bir alana izin vermez ve fazladan karakterler alamaz.

0

Benzer Sorunla karşılaştım .. ve bunun için çok eğlenceli bir çözüm var .. Sadece ConnectionString'inize bakın - Diğer ASP.Net uygulamalarınız için kullandığınız gibi değilse, o zaman olmamalıdır. .. Aradaki farkı tespit edebilir

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

tek küçük - - .. Varlık Framework farklı bir vaka için tamamen

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

Değiştir o vardır diye bir şey yok ';' ProviderName öğesinin sonunda .. Evet ve bu fark yaratır .. case hassaslığını kontrol etmemiş olmama rağmen ProviderName'in aynı kopyasıyla aynı olmalıdır. Ama bu benim Sorununu

0

başka bir veri noktası ... Ben Oracle ve Entity Framework ile çalışmak

çözdü. Bu soruna ulaşmak için Oracle ODP.NET, Managed Driver'ı kurdum. Nuget Paket Yöneticisi olarak

Install-Package Oracle.ManagedDataAccess 

Uygun montaj bilgileri ve DbProviderFactories ile App.config güncelleyecektir girin. VS 2015, Entity Framework 6 kullanıyorum. Ayrıca yüklü Oracle Geliştirici Araçları var.

+0

Merhaba @Jeff. Şu anda siteyi IIS 8.5'de dağıtırken aynı sorunla karşı karşıyayım. Bu http://stackoverflow.com/q/42090440/1839005 adresini kontrol edebilir misiniz? Değerli önerilerinizi takdir edin. – bkr

0

hata mükemmeldi ve yorumlar yukarıda iyiydi ama benim durumumda ben anlamıyla web.config dosyasında yanlış sağlayıcı yazıldığından: System.Data.SqlClinet değil System.DataSystem.Data.SqlClient

İlgili konular