DbProviderFactory не найден при публикации веб-сайта Entity Framework MVC 3 - PullRequest
1 голос
/ 29 июня 2011

У меня есть проект, который использует MVC 3 и Entity Franework. Сайт отлично работает на моей локальной машине, но при публикации на сервере я получаю следующую ошибку:

Unable to find the requested .Net Framework Data Provider.  It may not be installed.

Я провел некоторые исследования, и, похоже, фабрика провайдеров БД не зарегистрирована. Я попытался включить System.Data.Entity в качестве копии локального. Однако это не сработало.

Вот моя строка подключения:

<add name="SurveyEntities" connectionString="metadata=res://*/Models.Database.csdl|res://*/Models.Database.ssdl|res://*/Models.Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=websvr-new;Initial Catalog=Survey;Persist Security Info=True;User ID=SurveyUser;Password=5urv3yu5er;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Я видел несколько возможных решений, но большинство из них относится к SqLite.

1 Ответ

2 голосов
/ 15 июля 2011

Проблема оказалась в поврежденном файле machine.config на нашем сервере.Установщик другого провайдера БД создал второй раздел, вызывающий ошибку.Основная ошибка становится видимой только при создании метода контроллера, который перечисляет фабрики классов провайдеров.Следующий метод контроллера помог диагностировать проблему:

   public string provider()
        {
            string rs = "<table>";
            DataTable dt =  System.Data.Common.DbProviderFactories.GetFactoryClasses();
            foreach (DataRow row in dt.Rows)
            {
                rs += "<tr>";
                foreach (DataColumn COL in dt.Columns)
                {
                    rs += "<td>";
                    rs += ((string)row[COL]) ;
                    rs += "</td>";
                }
                rs += "</tr>";
            }
            rs += "</table>";
            return rs;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...