read - how to call configurationmanager c#
C#ConfigurationManager.GetSection no pudo cargar el archivo o ensamblado (4)
Necesita dos entradas en el archivo de configuración, una en el elemento configSections para declarar la sección de configuración personalizada, y otra, la propia sección de configuración personalizada. ¿Agregaste ambos?
por ejemplo:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
**<section name="Connections"
type="System.Configuration.DictionarySectionHandler" />**
</configSections>
<Connections
<add key="myServer" value="serverName" />
<add key="myPort" value="8080" />
<add key="myURI" value="RequestUri" />
<add key="UserId" value="joebob" />
<add key="password" value="$^%^&%$^&@%" />
/>
</configuration>
¡Estoy atascado! esto parece realmente tonto, pero no puedo ver dónde me estoy equivocando. Estoy creando un sitio web 2.0 C # ASP.NET. Estoy intentando usar una sección personalizada en el archivo web.config con:
DatabaseFactorySectionHandler sectionHandler = ConfigurationManager.GetSection("DatabaseFactoryConfiguration") as DatabaseFactorySectionHandler;
Tengo una DLL separada para los objetos que están en el espacio de nombres Bailey.DataLayer. Pero cuando ejecuto la página test.aspx aparece el siguiente error:
System.Configuration.ConfigurationErrorsException was unhandled by user code
Message="An error occurred creating the configuration section handler for DatabaseFactoryConfiguration: Could not load file or assembly ''Bailey.DataLayer'' or one of its dependencies. The system cannot find the file specified. (C://Documents and Settings//Administrator.PIP//My Documents//Visual Studio 2005//WebSites//bailey//web.config line 13)"
Source="System.Configuration"
La clase que intento obtener es la siguiente:
namespace Bailey.DataLayer
{
public sealed class DatabaseFactorySectionHandler : ConfigurationSection
{
[ConfigurationProperty("Name")]
public string Name
{
get { return (string)base["Name"]; }
}
[ConfigurationProperty("ConnectionStringName")]
public string ConnectionStringName
{
get { return (string)base["ConnectionStringName"]; }
}
public string ConnectionString
{
get
{
try
{
return ConfigurationManager.ConnectionStrings[ConnectionStringName].ConnectionString;
}
catch (Exception excep)
{
throw new Exception("Connection string " + ConnectionStringName +
" was not found in web.config. " +
excep.Message);
}
}
}
}
}
El archivo de configuración web tiene esta sección:
<configSections>
<section name="DatabaseFactoryConfiguration"
type="Bailey.DataLayer.DatabaseFactorySectionHandler, Bailey.DataLayer" />
</configSections>
He hecho esto en una aplicación de consola sin ningún problema, pero no puedo ver ninguna diferencia aparte de estar en una página web.
EDITAR
Todo compila y arroja el error en tiempo de ejecución, por lo que solo puedo suponer que encuentre el ensamblado porque está referenciado en la página test.aspx.cs.
Tengo la siguiente instrucción using en la parte superior de la página test.aspx.cs:
using Bailey.DataLayer;
Aquí está todo el archivo web.config para que no haya confusión:
<configuration>
<configSections>
<section name="DatabaseFactoryConfiguration" type="Bailey.DataLayer.DatabaseFactorySectionHandler, Bailey.DataLayer" />
</configSections>
<appSettings/>
<connectionStrings>
<add name="BaileyMDFConString" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/bailey.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<DatabaseFactoryConfiguration Name="System.Data.SqlClient" ConnectionStringName="BaileyMDFConString" />
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
O bien está utilizando el nombre incorrecto (es decir, no se llama Bailey.DataLayer.dll), o no se está copiando en el directorio bin en la compilación. Sin embargo, este último no parece probable.
(Ver mis comentarios sobre la pregunta para aclaración).
Es posible que desee echar un vistazo a http://www.primaryobjects.com/CMS/Article81.aspx que contiene, casi línea por línea, el código que ha mostrado anteriormente, incluido un ejemplo de un archivo web.config.
Ok ... tuve el mismo problema. Ninguna de las soluciones anteriores ayudó. En mi caso, mi archivo de configuración estaba en el mismo archivo DLL que el de web.config. Simplemente eliminé el espacio de nombres de la sección de configuración y eso solucionó mi problema.
No funciona
<configSections>
<section name="authorizedServerSection" type="ProjectName.ClientApi.Filters.AuthorizedServerSection, ProjectName.ClientApi.Filters" requirePermission="false"/>
Trabajando
<configSections>
<section name="authorizedServerSection" type="ProjectName.ClientApi.Filters.AuthorizedServerSection" requirePermission="false"/>
Tan pronto como eliminé el espacio de nombres , ProjectName.ClientApi.Filters
comenzó a funcionar.