1

我在这里遇到了一个严重的问题,我正在尝试为我的网络应用程序配置一个新部分,并且在尝试了 10000 种不同的东西之后,我认为如果我自己发帖会更好。

这是我的代码:

<configSections>    
  <section name="EmailConfigurationSection"
           type="ServiceEmail.Helper.EmailConfigurationSection, ServiceEmail.Helper,  Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>   
</configSections>

<EmailConfigurationSection isDebug="true" 
  smtpAddress="***" 
  smtpLogin="***" 
  smtpPassword="***" 
  smtpPort="***" 
  emailPersonForTest="***@***.lu"/>       
public class EmailConfigurationSection : ConfigurationSection
{
    private static readonly EmailConfigurationSection settings = ConfigurationManager.GetSection("EmailConfigurationSection") as EmailConfigurationSection;

    public static EmailConfigurationSection EmailConfiguration
    {
        get { return settings; }
    }

    [ConfigurationProperty("isDebug", DefaultValue = "false", IsRequired = false)]
    public Boolean IsDebug
    {
        get { return (Boolean) this["isDebug"]; }
        set { this["isDebug"] = value; }
    }
}

...我在这里有我的 web.config 中定义的所有属性

每次我尝试访问一个属性时,我NullReferenceException都会在 EmailConfiguration 上得到一个

我已经设置了我的 web.conf 以便将其复制到输出目录中。

使用 NameCollectionValue 后,我得到了:

Une exception a été levée par l'initialiseur de type pour 'ServiceEmail.Helper.EmailConfigurationSection'. --System.Configuration.ConfigurationErrorsException: Une erreur s'est produite lors de la création du gestionnaire de section de configuration pour EmailConfigurationSection : Impossible de charger le fichier ou l'assembly 'ServiceEmail.Helper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable. (C:\inetpub\wwwroot\Service_Mails\web.config line 8) ---> System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'ServiceEmail.Helper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable.
   à System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host, String typeString, Boolean throwOnError)
   à System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.Init(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
   à System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.InitWithRestrictedPermissions(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord)
   à System.Configuration.RuntimeConfigurationRecord.CreateSectionFactory(FactoryRecord factoryRecord)
   à System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere)
   --- Fin de la trace de la pile d'exception interne ---
   à System.Configuration.BaseConfigurationRecord.FindAndEnsureFactoryRecord(String configKey, Boolean& isRootDeclaredHere)
   à System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   à System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   à System.Configuration.ConfigurationManager.GetSection(String sectionName)
   à ServiceEmail.Helper.EmailConfigurationSection..cctor() dans C:\Users\***\documents\visual studio 2010\Projects\ServiceEmail\ServiceEmail\Helper\EmailConfigurationSection.cs:ligne 14 --ServiceEmail
4

2 回答 2

1

更新 :

从您的编辑来看,您的 type 属性似乎有错误。确保 dll 名称确实是ServiceEmail.Helper.dll. 它可能只是ServiceEmail.dll


您可能试图过早地初始化您的设置。

也许你可以尝试更换

private static readonly EmailConfigurationSection settings = ConfigurationManager.GetSection("EmailConfigurationSection") as EmailConfigurationSection;

public static EmailConfigurationSection EmailConfiguration
{
    get
    {
        return settings;
    }
}

和 :

public static EmailConfigurationSection EmailConfiguration
{
    get
    {
        return ConfigurationManager.GetSection("EmailConfigurationSection") as EmailConfigurationSection;
    }
}
于 2013-10-15T08:17:26.013 回答
0

您可以尝试以下吗?

EmailConfigurationSectionloc = 
   (EmailConfigurationSection)ConfigurationSettings.GetConfig("EmailConfigurationSection");
于 2013-10-15T07:01:08.797 回答