Не удалось найти запрошенный поставщик данных .Net Framework

c#
Вопрос:Im, использующий Visual Studio 2010 Ultimate, Project - С# MVC3 Razor У меня есть проект, который работает без каких-либо проблем на локальной машине, используя базу данных MySql (из онлайн-сервера) просто отлично, но когда я ее загружаю и когда она попадает в ту часть, где нужно получать данные с сервера MySql, она дает мне эта ошибка:

Вопрос:

Im, использующий Visual Studio 2010 Ultimate, Project – С# MVC3 Razor

У меня есть проект, который работает без каких-либо проблем на локальной машине, используя базу данных MySql (из онлайн-сервера) просто отлично, но когда я ее загружаю и когда она попадает в ту часть, где нужно получать данные с сервера MySql, она дает мне эта ошибка:

Не удалось найти запрошенный поставщик данных .Net Framework. Это может не быть установленным.

Это моя строка подключения из Web.config для MySql, так как это нормально работает, когда я отлаживаю проект локально. Читает информацию из таблиц и показывает на странице.

<add name=»istakipDBContext» connectionString=»Server=xxx.xxx.xxx.xxx; Database=xxx; Uid=xxx; Pwd=xxx;» providerName=»MySql.Data.MySqlClient» />

И это целая трассировка стека:

Ошибка сервера в приложении “/”. Не удалось найти запрошенную .Net Поставщик данных каркаса. Он не может быть установлен. Описание: необработанное исключение произошло во время выполнения текущей сети запрос. Просмотрите трассировку стека для получения дополнительной информации о и где он возник в коде.

Сведения об исключении: System.ArgumentException: невозможно найти запрошенный поставщик данных .Net Framework. Он не может быть установлен.

Ошибка источника:

Необработанное исключение было создано во время выполнения текущий веб-запрос. Информация о происхождении и местонахождении исключение может быть идентифицировано с использованием трассы стека исключений ниже.

Трассировка стека:

[ArgumentException: невозможно найти запрошенные данные .Net Framework Provider. Он не может быть установлен.]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1420503
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String имя) +393
System.Data.Entity.Internal.LazyInternalConnection.Initialize() +47
System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel() +9 System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +262 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Тип entityType) +17
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +63
System.Data.Entity.Internal.Linq.InternalSet 1.GetEnumerator() +15
System.Data.Entity.Infrastructure.DbQuery 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
+40 System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) +315 System.Linq.Enumerable.ToList(IEnumerable 1 источник) +58 onlinetercume.Controllers.istakiplerController.Index() в C:WwwrootнпснпсКонтроллерыistakiplerController.cs: 21 lambda_method (Closure, ControllerBase, Object []) +62
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase контроллер, объект []) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 parameters) +208
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 параметры) +27
System.Web.Mvc <. > C_DisplayClass15.b_12() +55 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter фильтр, ActionExecutingContext preContext, Func 1 continuation) +263
System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14()
+19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext
controllerContext, IList 1 фильтр, ActionDescriptor actionDescriptor, IDictionary 2 parameters) +191
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext
controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
+97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext
requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8 1.b__7 (IAsyncResult ) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc. < > c_DisplayClasse.b_d() +50
System.Web.Mvc.SecurityUtil.b_0 (Действие f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(действие действия) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult результат) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970061 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, Boolean и завершено синхронно) +184

Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.272

Лучший ответ:

Поставщик должен быть зарегистрирован в одном из файлов иерархической конфигурации. Например, у меня есть провайдер oracle, зарегистрированный в файле machine.config(который, кажется, выполняется автоматически, когда я установил odac с установщиком установки).

Мой machine.config выглядит следующим образом:

<system.data> <DbProviderFactories> <add name=»Oracle Data Provider for .NET» invariant=»Oracle.DataAccess.Client» description=»Oracle Data Provider for .NET» type=»Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342″ /> <add name=»ODP.NET, Managed Driver» invariant=»Oracle.ManagedDataAccess.Client» description=»Oracle Data Provider for .NET, Managed Driver» type=»Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342″ /> <add name=»Microsoft SQL Server Compact Data Provider 4.0″ invariant=»System.Data.SqlServerCe.4.0″ description=».NET Framework Data Provider for Microsoft SQL Server Compact» type=»System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91″ /> </DbProviderFactories>

Будьте осторожны, потому что в приложениях Asp.Net есть еще один файл cofig в иерархии, называемый aslo web.config. Он находится в той же папке, что и machine.config. В этой ссылке объясняется иерархия конфигурации Asp.Net: msdn

Если поставщик не зарегистрирован в одном из этих файлов, генерируется сообщение об ошибке. В этом случае я считаю, что лучший способ решить эту проблему – добавить конфигурацию прямо в файл asp.net aplication web.config. что-то вроде этого:

<system.data> <DbProviderFactories> <remove invariant=»Oracle.DataAccess.Client» /> <add name=»Oracle Data Provider for .NET» invariant=»Oracle.DataAccess.Client» description=»Oracle Data Provider for .NET» type=»Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342″ /> </DbProviderFactories> Ответ №1

Ошибка ясна, он не может найти поставщика данных MySQL

Если вы развернули на ваш производственный сервер, возможно, вы не развернули компонент MySQL, убедитесь, что вы развернули dll MySQL в папку bin вашего приложения.

Общей проблемой является наличие компонента, установленного в GAC, в изолированной среде разработки, и они отсутствуют на рабочем сервере, проверьте, находится ли dll в GAC:

Глобальный кэш сборок (GAC) расположен в: %windir%assembly

Вы можете заставить ссылки из вашего проекта быть развернуты на производственный сервер, выбрав свойство copy always для сборки в true, однако, если оно настроено на разрешение ссылки из GAC, тогда лучше установить компонент в GAC в производственной коробке:

enter image description here

enter image description here

Это шаги для установки поставщика данных MySQL в GAC

Как резюме:

  • Решение 1:

    Запустите следующую команду для регистрации поставщика данных MySQL в GAC (таким образом, версия вашего поставщика данных MySQL будет установлена ​​глобально для всех приложений на сервере)

    “C:Program Files (x86)Microsoft SDKWindowsv7.0ABingacutil.exe” /i MySql.Data.dll

  • Решение 2:

    Скопируйте dll MySql.Data.dll в каталог bin вашего приложения

Ответ №2

Для этой конкретной ошибки в Microsoft Visual Studio Professional 2012 просто проверьте имя Provider:

<providerName=»System.Data.SqlClient»/>

Оцените статью
Добавить комментарий