2013-04-23 58 views
6

Sau khi hoàn thành ASP.NET MVC 3 (tìm here), tôi đã cố gắng xuất bản ứng dụng trực tuyến. Tôi liên lạc với công ty lưu trữ để chắc chắn nếu nó có thể lưu trữ các ứng dụng MVC 3. Nhưng tôi đã phải bin triển khai (dll tập tin) ứng dụng. Vì vậy, sau khi làm theo một số bước trên hanselmans blog, tôi đang bị mắc kẹt trên báo lỗi sau:Không thể tìm thấy Nhà cung cấp Dữ liệu Khung được yêu cầu. Nó có thể không được cài đặt

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

Any help is appreciated.

+0

Bạn đang sử dụng Entity Framework? – mattytommo

+0

Vâng, đó là chính xác những gì được đề cập trong hướng dẫn. – SamekaTV

+1

Bạn có thêm tham chiếu Copy Local = True vào khung Entity Framework không? – mattytommo

Trả lời

11

Từ kinh nghiệm của tôi, lỗi đó có nghĩa là giá trị của thuộc tính providerName trên chuỗi kết nối trong web.config của bạn không đúng hoặc nhà cung cấp nghĩa là chưa được cài đặt. Nếu providerName của bạn được đặt thành System.Data.SqlServerCe.4.0 (SQL Server Compact), điều này không phổ biến trong quá trình phát triển, tôi có thể đảm bảo với bạn rằng nó chưa được cài đặt trên máy chủ web của bạn; nó chỉ được sử dụng bên trong Visual Studio để phát triển. Bạn có thể chỉ cần thay đổi nó thành một nhà cung cấp máy chủ SQL thực sự: System.Data.SqlClient.

+1

Xác minh chuỗi kết nối của bạn, để đảm bảo rằng tên máy chủ và thông tin xác thực là chính xác. –

2

Tôi đã giải quyết vấn đề.

Tôi tìm thấy một không gian trong providerName. Vì vậy, .net khuôn khổ không thể kết nối chuỗi estblish với cơ sở dữ liệu.

Kiểm tra kết nối của bạnBắt giá trị thuộc tính thẻ. providerName của bạn có thể không được xác định rõ. không cho phép bất kỳ không gian nào và thêm các ký tự thừa trong giá trị providerName.

0

Tôi phải đối mặt với vấn đề tương tự .. và có giải pháp rất vui cho điều đó .. Chỉ cần nhìn vào ConnectionString của bạn - Nếu nó giống như bạn đã sử dụng cho các ứng dụng ASP.Net khác của bạn thì không nên. .. Entity Framework có một trường hợp hoàn toàn khác

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

Thay đổi nó để -

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

bạn có thể xác định sự khác biệt .. chỉ có một nhỏ - không có ';' ở cuối ProviderName .. Có và điều đó tạo nên sự khác biệt .. nó phải giống với cùng một bản sao của ProviderName, mặc dù tôi chưa kiểm tra độ nhạy của chữ hoa. Nhưng điều đó giải quyết vấn đề của tôi

0

Một điểm dữ liệu ...

tôi làm việc với Oracle và khung Entity. Tôi đã cài đặt Oracle ODP.NET, Managed Driver để giải quyết vấn đề này. Trong Trình quản lý gói NuGet, hãy nhập

Install-Package Oracle.ManagedDataAccess 

Nó sẽ cập nhật App.config với thông tin lắp ráp thích hợp và DbProviderFactories. Tôi đang sử dụng VS 2015, Entity Framework 6. Tôi cũng đã cài đặt Công cụ dành cho nhà phát triển Oracle.

+0

Xin chào @Jeff. Tôi hiện đang phải đối mặt với cùng một vấn đề trong khi triển khai các trang web trong IIS 8.5. Bạn có thể vui lòng kiểm tra http://stackoverflow.com/q/42090440/1839005 này không. Đánh giá cao các đề xuất có giá trị của bạn. – bkr

0

Các lỗi là hoàn hảo, và các ý kiến ​​trên là tốt nhưng trong trường hợp của tôi theo nghĩa đen đánh vần các nhà cung cấp sai trong tập tin web.config: System.Data.SqlClinet không System.Data.SqlClient

Các vấn đề liên quan