C# ConfigurationManager.GetSection n'a pas pu charger le fichier ou l'assembly
Je suis coincé! cela semble vraiment idiot mais je ne peux pas voir où je vais mal. Je suis entrain de créer un 2.0 C# ASP.NET site web. Je suis en train d'utiliser une section personnalisée sur le web.fichier de configuration:
DatabaseFactorySectionHandler sectionHandler = ConfigurationManager.GetSection("DatabaseFactoryConfiguration") as DatabaseFactorySectionHandler;
J'ai une DLL pour les Objets qui sont dans Bailey.DataLayer espace de noms. Mais quand je lance le test.page aspx j'obtiens l'erreur suivante:
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 classe que j'essaie de le faire est comme suit:
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);
}
}
}
}
}
Le fichier de configuration web de cette section:
<configSections>
<section name="DatabaseFactoryConfiguration"
type="Bailey.DataLayer.DatabaseFactorySectionHandler, Bailey.DataLayer" />
</configSections>
J'ai fait ça dans une application console sans problème, mais ne voit pas de différences hormis qu'il soit dans une page web.
MODIFIER
Tout compile et lance l'erreur à l'exécution, donc je ne peux que supposer qu'il trouver de l'assemblée car il est référencé dans le test.aspx.cs page.
J'ai le texte suivant à l'aide de déclaration au sommet de l'épreuve.aspx.cs page:
using Bailey.DataLayer;
Ici est tout le web.fichier de configuration, donc il n'y a pas de confusion:
<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>
Et bien c'est votre problème... Vous n'avez pas réellement la section personnalisée.
Il est là, mais je ne peux pas obtenir le XML du fichier de configuration pour afficher correctement, ou à tout maintenant!
Personnalisé configs sont une douleur dans le cul, surtout quand ils ne sont pas tout à fait raison... Ma suggestion est d'ajouter des points d'arrêt PARTOUT!
J'ai la pause sur le point d'être créé, appuyez sur F11 pour l'étape en elle, et j'ai l'ConfigurationErrorsException a été gérée, en disant Bailey.DataLayer n'a pas pu être chargé! GRRRRR.. je vous remercie pour votre aide Andrew
OriginalL'auteur Jon | 2009-01-16
Vous devez vous connecter pour publier un commentaire.
Soit vous utilisez le mauvais nom (c'est à dire qu'il n'est pas appelé Bailey.DataLayer.dll), ou il n'est pas copié dans le répertoire bin de construire. Ce dernier ne semble pas probable cependant.
(Voir mes commentaires sur la question de clarification).
ici, msdn.microsoft.com/en-en/library/2tw134k3.aspx décrit le processus de création de la section de configuration. Et il y a une chose que l'assemblage à l'article devrait d'ici au même niveau que webconfig où tu veux l'utiliser, comme l'est: l'assemblage qui définit la section dans le même répertoire que le Web.fichier de configuration.
OriginalL'auteur Andrew Rollings
Ok ... j'ai eu le même problème. Aucune des solutions ci-dessus aidé.
Dans mon cas, mon fichier de configuration est dans la même dll en tant que de web.config. J'ai tout simplement supprimé de l'espace de noms à partir de la section de configuration et qui a résolu mon problème.
Pas de travail
De travail
Dès que j'ai enlevé l'espace de noms
, ProjectName.ClientApi.Filters
il a commencé à travailler.OriginalL'auteur Rwiti
Vous avez besoin de deux entrées dans le fichier de config, l'un sur la configSections élément de déclarer la coutume section de configuration, et l'autre - la mesure de config de l'article lui-même. Avez-vous d'ajouter les deux?
par exemple:
+1 pour l'astuce sur le Système.La Configuration.DictionarySectionHandler - rendu les choses beaucoup plus facile pour moi!
OriginalL'auteur Charles Bretana
Vous voudrez peut-être avoir un coup d'oeil à http://www.primaryobjects.com/CMS/Article81.aspx qui contient, presque ligne par ligne, le code que vous avez indiqué ci-dessus, y compris un exemple à partir d'un site web.fichier de configuration.
OriginalL'auteur