2016-05-06 4 views
-1

Мы просто настроить совместимый сервер нового PCI и когда я раскрываю мое asp.net приложения к нему я получаю это сообщение: ошибкис EF 6.1.3 в IIS 7

Провайдер ADO.NET с Инвариантное имя «System.Data.SqlClient» либо не зарегистрировано в файле конфигурации устройства или приложения, либо не может быть загружено. Подробнее см. Внутреннее исключение.

Я дважды проверил свой файл конфигурации, удалил EF и переустановил его во всех проектах. Я вижу DLL в папке bin после развертывания (мы используем CI с городом команды и осьминогами). Я проверил почти все сообщения в Интернете, чтобы решения не имели успеха.

Когда я развертываю это приложение на сервере, не совместимом с PCI, он отлично работает. Я не в курсе, что может вызвать это!

web.config

<configSections> 
 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
 
    </configSections> 
 

 
<!-- Connection String --> 
 
<add name="BondedBuilderModel" connectionString="data source=SqlServer;initial catalog=mydb;integrated security=false;User Id=user; Password =pass;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/> 
 
     
 

 
<!-- Provider --> 
 
    <entityFramework> 
 
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
 
      <parameters> 
 
       <parameter value="System.Data.SqlClient"/> 
 
      </parameters> 
 
     </defaultConnectionFactory> 
 
     <providers> 
 
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> 
 
     </providers> 
 
    </entityFramework>

** Исключение **

The ADO.NET provider with invariant name 'System.Data.SqlClient' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details. 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.<GetService>b__0(ArgumentException e, String n) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.GetService(Type type, Object key, Func`3 handleFailedLookup) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k) 
 
    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CachingDependencyResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) 
 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.RootDependencyResolver.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) 
 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
 
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key) 
 
    at System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.CreateConnectionFromProviderName(String providerInvariantName) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) 
 
    at System.Data.Entity.Internal.LazyInternalConnection.Initialize() 
 
    at System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName() 
 
    at System.Data.Entity.Internal.LazyInternalContext.get_ProviderName() 
 
    at System.Data.Entity.Internal.DefaultModelCacheKeyFactory.Create(DbContext context) 
 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 
 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
 
    at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) 
 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) 
 
    at System.Data.Entity.DbSet`1.Add(TEntity entity) 
 
    at BondedBuilders.Data.LoggerData.LogError(String errorType, String errorMessage, String stackTrace) in c:\TeamCity\buildAgent\work\f206d6cc22a03ea8\source\web\BondedBuilders.Data\LoggerData.cs:line 31 
 
    at BondedBuilders.Data.LoggerData.LogError(Exception exception) in c:\TeamCity\buildAgent\work\f206d6cc22a03ea8\source\web\BondedBuilders.Data\LoggerData.cs:line 11 
 
    at BondedBuilders.WebClient.Templates.Main.HandleSystemError(Exception ex) in c:\TeamCity\buildAgent\work\f206d6cc22a03ea8\source\web\BondedBuilders.WebClient\Templates\Main.Master.cs:line 18 
 
    at BondedBuilders.WebClient.Default.ButtonContinue_Click(Object sender, EventArgs e) in c:\TeamCity\buildAgent\work\f206d6cc22a03ea8\source\web\BondedBuilders.WebClient\Default.aspx.cs:line 95 
 
    at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) 
 
    at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 
 
    at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
 
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
 
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

+0

«Подробнее см. Внутреннее исключение». Что говорит внутреннее исключение? –

+0

Возможный дубликат [Entity Framework ADO.NET Поставщик Sql.Data.Client не найден] (http://stackoverflow.com/questions/20111583/entity-framework-ado-net-sql-data-client-provider-not-) –

+0

Я пробовал все предложения на этом посту и ничего не работал. как вы заметили из комментариев, проблема не была решена. – mghz

ответ

2

Для всех, кто прошел через это, наконец понял это.
В файле machine.config:

32-битном

%windir%\Microsoft.NET\Framework\[version]\config\machine.config 

64-битном

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Там был раздел dbproviders определен, но сразу же после того, как он был еще один такой как <DbProviderFactories/>

Как только эта вторая была удалена, приложение начало работать, и ошибка выше перестала отображаться.
Остается вопрос, почему в конфигурации машины должны быть определены обе секции. Никто не редактировал этот файл вручную!

+0

Хорошая находка! У меня была догадка, что проблема была в machine.config, поэтому я был так привязан к ней в своих комментариях и почему я рекомендовал сравнить. Рад, что ты это нашел. – Arman