The provider for invariant name ‘System.Data.SqlClient’ is specified multiple times in the application configuration Asp.net MVC uygulamasında alt uygulamaya girmek geçiş yapmak istediğim anlarda aşağıdaki türden bir hata mesajı geliyorsa

An error occurred creating the configuration section Hatası
An error occurred creating the configuration section Hatası

An error occurred creating the configuration section handler for entityFramework: The provider for invariant name ‘System.Data.SqlClient’ is specified multiple times in the application configuration. The invariant name must be unique for each configured provider. (C:\inetpub\wwwroot\tt\panel\web.config line 106)

The type initializer for ‘System.Data.Entity.Internal.AppConfig’ threw an exception.

Asp.net uygulaması bir root uygulaması oluşturuyor ve

C:\inetpub\wwwroot\tt\ (Root)

C:\inetpub\wwwroot\tt\panel (Alt uygulama)

Her iki uygulamada da .Net Framework 4.5 kullanıyorsanız

The provider for invariant name ‘System.Data.SqlClient’ is specified multiple times in the application configuration hatasının sebebini açıklamaya ve çözüm yolları aramaya bakacağız.

An error occurred creating the configuration section Hatası ve Çözüm Yolları:

Asp.Net MVC ile uygulama geliştiriyor ve uygulamanızın altında alt uygulamalar varsa bu alt uygulamalarda da Entity Framrwork gibi ortak bir bileşen kullanıyorsanız Web.config dosyasının miras alma özelliğinin olduğunu unutmamalısınız.

Örnegin internet sitenizin çok sayıda uygulama yani applicationa sahipse

C:\inetpub\wwwroot\tt\ (Root)
C:\inetpub\wwwroot\tt\panel (Alt uygulama)

TT uygulamasının Web.config içerisinde ki değerleri Panel uygulamasına aktarılır.

Web.config dosyasında miras alma işleminini durdurmak için Location ifadesini kullanabilirsiniz.

<locationpath="."inheritInChildApplications="false"></location>

Web.config içinde ki hataya sebep olan Entity Framework bileşenini location ile aşağıdaki gibi yazarsanız hata alma işlemi engellenecektir. Location ifadesinde inheritInChildApplications=”false” ile bu işlemleri durduracaktır.

Entity Framework için “Root web.config” ifadesi uygulanmalıdır.

<locationpath="."inheritInChildApplications="false"><entityFramework><defaultConnectionFactorytype="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/><providers><providerinvariantName="System.Data.SqlClient"type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/></providers></entityFramework></location>

онлайн анализ сайтасша школа