Mot-clé - Configuration

Fil des billets

mardi, 28 septembre 2010

Installation d'une Dédibox V3 sous Debian - Fail2Ban

On continue aujourd'hui la sécurisation de notre serveur par l'installation d'un logiciel fort sympathique tournant sous python à savoir fail2ban. Le but de ce logiciel est de monitorer les accès de login sous SSH via une lecture du syslog.

Lire la suite...

mercredi, 10 février 2010

Configuration, ConfigurationSection et TypeLoadException

Petite information à l'attention de tous ceux qui utilisent des classes dérivées de ConfigurationSection en .Net, et qui m'a quand même fait perdre un bon jour de développement. Si d'aventure la méthode Add() de Configuration.Sections retourne une exception de type TypeLoadException en indiquant que la classe n'est pas publique (alors que si, elle est publique, tout bien comme il faut), c'est que vous rencontrez le même souci que moi. En fait, le message d'erreur est trompeur et le souci est tout autre; c'est tout simplement parce que la signature de votre constructeur possède des paramètres! L'exemple simpliste suivant démontre l'erreur:

using System.Configuration;

namespace ConfigurationSectionTest
{
    public class MyConfigurationSection : ConfigurationSection
    {
        public MyConfigurationSection(object dummy) : base()
        {
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);

            configuration.Sections.Add("test", new MyConfigurationSection(new object()));
        }
    }
}

Si l'on retire le paramètre object du code, miracle, tout fonctionne!

using System.Configuration;

namespace ConfigurationSectionTest
{
    public class MyConfigurationSection : ConfigurationSection
    {
        public MyConfigurationSection() : base()
        {
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);

            configuration.Sections.Add("test", new MyConfigurationSection());
        }
    }
}

Bref, j'espère que cela vous aura sorti une épine du pied...