2013-10-01 40 views
1

我在將我的網站(asp.net mvc3)連接到MySQL時遇到問題。將ASP.NET MVC3網站連接到MySQL的問題

本地主機正在工作,但在服務器上我收到以下錯誤:

Error: Unable to locate the Data Provider. Requested Net Framework. Maybe it is not installed.

Stacktrace: [ArgumentException: The repository provider specified is not found in the configuration or is not valid.]
System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +11468668
System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) +575
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) +144 ... +21 System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() +44 System.Linq.Queryable.Where(IQueryable 1 source, Expression 1 predicate) +85 AcusticoA3.Controllers.HomeController.Index() +978 lambda_method(Closure , ControllerBase , Object[]) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 parameters) +264
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +124 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 continuation) +727142 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +309
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +727076
System.Web.Mvc.Controller.ExecuteCore() +159
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +334 System.Web.Mvc.<>c_DisplayClassb.b_5() +62 System.Web.Mvc.Async.<>c_DisplayClass1.b_0() +15 System.Web.Mvc.<>c_DisplayClasse.b_d() +52
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

我使用Mysql.connector 6.6.5.0和5.0的EntityFramework。

我的ConnectionString:

<connectionStrings> 
    <add name="MyEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=[HOST];user id=[USER]; password=[PASSWORD]; database=[DATABASE]&quot;" providerName="System.Data.EntityClient"/> </connectionStrings> 
+0

你能張貼'MySql.Data實施.MySqlClient'?也許嘗試'提供者= System.Data.SqlClient'而不是? – rae1

+0

「無法找到數據提供」可能意味着MySQL提供程序未安裝在服務器上,不是? –

+0

嗨,這是我的代碼: using(var db = new MyEntities()){ //錯誤在這裏發生。 ViewBag.BookData =(從db.book中的t where t.Date> = currentData select t).Take(2); } –

回答

1

我解決。

只要把供應商的dll在bin文件夾和設置。Web.config中:

<system.data> 
    <DbProviderFactories> 
     <clear /> 
     <remove invariant="MySQL Data Provider"/> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />  
    </DbProviderFactories> </system.data> 

只記得更改提供的版本。

0

你也可以告訴編譯器的bin目錄到將這些文件複製,通過設置「複製本地」:

enter image description here