IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Recuperation d 'une valeur dans le fichier web.config


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut Recuperation d 'une valeur dans le fichier web.config
    Bonsoir à tous,

    voilà ma structure d'une section du fichier web.config de mon app;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <configuration>
     
      <system.net>
        <mailSettings>
          <smtp>
            <network
              host="localhost"
              port="25"
              defaultCredentials="true" />
          </smtp>
     
        </mailSettings>
     
      </system.net>
    .................................
    </configuration>
    j'aimerais récuperer les valeurs host et port de l'element network

    quelles sont les namespace à utiliser, y a-t-il des exemples de codes?

    Merci bien

    Edit:
    pardon j' ai oublié de posté mon test

    j'ai donc essayé celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     SmtpSection smtp = WebConfigurationManager.GetSection("smtp") as SmtpSection;
     
     
    TextBox1= smtp.Network.Host;
    et j' ai une exception de reference null qui est levé...

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Un petit exemple que j'utilise dans ce billet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     <configSections>
      <sectionGroup name="AspNetPerformance.Util">
        <section name="Caching" requirePermission="false" type="AspNetPerformance.Util.Caching.CachingSection, AspNetPerformance.Util" />
      </sectionGroup>
    </configSections>
    
    <AspNetPerformance.Util>
      <Caching CachingTimeSpan="100">
        <FileExtensions>
          <add Extension="gif" ContentType="image\gif" />
          <add Extension="jpg" ContentType="image\jpeg" />
          <add Extension="png" ContentType="image\png" />
        </FileExtensions>
      </Caching>
    </AspNetPerformance.Util>
    Et pour le lire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
          
    public class CachingSection : ConfigurationSection      
    {          
       [ConfigurationProperty("CachingTimeSpan", IsRequired = true)]        
       public double CachingTimeSpan          
       {             
         get { return (double)base["CachingTimeSpan"]; }             
         set { base["CachingTimeSpan"] = value; }          
       }    
    
       [ConfigurationProperty("FileExtensions", IsDefaultCollection = true, IsRequired = true)]          
       public FileExtensionCollection FileExtensions          
      {             
        get { return ((FileExtensionCollection)base["FileExtensions"]); }          
      }      
    }
    Ensuite un simple appel permet de récuperer tout ça depuis le web.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CachingSection config =(CachingSection)context.GetSection("AspNetPerformance.Util/Caching");
    if (config != null) ....
    Avec context représentant le HttpContext.

    En espérant t'avoir aidé.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Merci je vais lire tout ça.

    Mais je débute vraiment ds ce projet, et j' ai pas mal de point d' interrogation; notamment au niveau de la sémentique...

    par exemple sur la methode "getsection()" que j'utilise sur l'objet
    WebConfigurationManager.

    pkoi ce code marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
           ConnectionStringsSection c = WebConfigurationManager.GetWebApplicationSection("connectionStrings") as ConnectionStringsSection;
    et que celui ci renvoie une reference null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SmtpSection ss = WebConfigurationManager.GetWebApplicationSection("smtp") as SmtpSection;
    je dois mal comprendre le terme "section" ( je m 'embrouille entre les sections, les sectiongroup...)

    deuxieme point :
    ds leconstructeur de la classe SmtpClient
    comment savoir quel port spécifier et quel domaine?

    Merci bien et bon week end à tous

  4. #4
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    C'est simplement que "smtp" seul ne suffit pas. Il faut préciser la hiérarchie du web.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
    En espérant t'avoir aidé.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    ah oui super c'etait ça le probleme!! merci beaucoup


    mais par contre ds le fichier web.config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <system.net>
                <mailSettings>
                    <smtp deliveryMethod="Network" from="admin@example.com">
                        <network defaultCredentials="true" host="smtp.example.com" port="25" userName="admin@example.com" password="password"/>
                    </smtp>
                </mailSettings>
            </system.net>
    l attribut username est bien l adresse du destinataire du mail non ( ou je m 'embrouille totalement?)? quel est l utilité de l attribut password?

    et je ne sais toujours pas quoi mettre dans host et port...

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    UserName et password concerne les Credentials pour le serveur smtp. Ils permettent de préciser, si besoin, le login+password nécessaire pour s'identifier et utiliser le serveur smtp.

    Je t'invite à consulter MSDN à ce sujet. Une recherche sur Google te permettra également de trouver les différentes possibilités de configuration.

    En espérant t'avoir aidé.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Oui bien sûr merci bien

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    en fait j' ai un problème de comprehension de l architecture...

    à la remise du message eclectronique au serveur smtp... si ce derniers est "localhost"

    en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SmtpClient client=new SmtpClient();
    client.host="localhost"
    celà veut dire que sur le même poste j' ai un client et un serveur smtp?
    (en l occurence ma machine?) ou alors je dis vraiment n importe quoi

    voilà mon test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     protected void envoie_mail(object sender, EventArgs e)
        {
            MailAddress expediteur = new MailAddress("kasra.shahram@gmail.com");
            MailAddress destinataire = new MailAddress("kasrashahram61@hotmail.com");
            MailMessage message = new MailMessage(expediteur, destinataire);
            message.Subject = "sujet du mail";
            message.Body = "Bonjour";
            SmtpClient client_smtp = new SmtpClient("localhost", 25);
            client_smtp.UseDefaultCredentials = true;
            client_smtp.Send(message);
     
     
        }
    et j' ai comme message d'erreur :

    Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée 127.0.0.1:25
    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Net.Sockets.SocketException: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée 127.0.0.1:25
    Merci bien

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par kaskroute Voir le message
    en fait j' ai un problème de comprehension de l architecture...

    à la remise du message eclectronique au serveur smtp... si ce derniers est "localhost"

    en mettant :



    celà veut dire que sur le même poste j' ai un client et un serveur smtp?
    (en l occurence ma machine?) ou alors je dis vraiment n importe quoi

    voilà mon test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     protected void envoie_mail(object sender, EventArgs e)
        {
            MailAddress expediteur = new MailAddress("kasra.shahram@gmail.com");
            MailAddress destinataire = new MailAddress("kasrashahram61@hotmail.com");
            MailMessage message = new MailMessage(expediteur, destinataire);
            message.Subject = "sujet du mail";
            message.Body = "Bonjour";
            SmtpClient client_smtp = new SmtpClient("localhost", 25);
            client_smtp.UseDefaultCredentials = true;
            client_smtp.Send(message);
     
     
        }
    et j' ai comme message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée 127.0.0.1:25
    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
     
    Détails de l'exception: System.Net.Sockets.SocketException: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée 127.0.0.1:25


    Merci bien
    Effectivement tu n'as pas de serveur SMTP sur ton poste, il faut donc que tu utilises un vrai (type gmail, etc)

  10. #10
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Citation Envoyé par kaskroute Voir le message
    celà veut dire que sur le même poste j' ai un client et un serveur smtp?
    (en l occurence ma machine?) ou alors je dis vraiment n importe quoi
    Si tu veux envoyer un mail, il te faut passer par un serveur SMTP. Dans ton code tu utilises un client SMTP pour passer l'appel.

    Ensuite deux cas possibles : soit ce serveur est installé sur la même machine, soit il est sur un autre serveur. Donc utilisé localhost sous-entend que tu as ton serveur SMTP sur ta machine.

    En espérant t'avoir aidé.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    bon je pense te suivre , dc ici le serveur smtp est sur ma machine...
    J' ai vu que la classe SmtpPermission contrôlait l'accès . Il faut donc que mon smtpclient ait cette permission non?


    mais là je ne vois pas comment faire?
    en ecrivant juste çà par exemple??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SmtpPermission permission = new SmtpPermission(SmtpAccess.Connect);
    mais comment passer la permission au smtpclient pour qu' il puisse appeler "send()" correctement?

    Merci bien!!

  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par kaskroute Voir le message
    bon je pense te suivre , dc ici le serveur smtp est sur ma machine...
    J' ai vu que la classe SmtpPermission contrôlait l'accès . Il faut donc que mon smtpclient ait cette permission non?


    mais là je ne vois pas comment faire?
    en ecrivant juste çà par exemple??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SmtpPermission permission = new SmtpPermission(SmtpAccess.Connect);
    mais comment passer la permission au smtpclient pour qu' il puisse appeler "send()" correctement?

    Merci bien!!
    T'es sur que t'as un smtp sur ta machine? C'est assez lourd à mettre en place!

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    bonjour,

    non non j' vais utiliser smtp.gmail.com

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     MailAddress expediteur = new MailAddress("expediteur@gmail.com");  MailAddress destinataire = new MailAddress("destinataire@hotmail.com");
       MailMessage message = new MailMessage(expediteur, destinataire);
     
            message.Subject = "sujet du mail";
            message.Body = "Bonjour";
     
            SmtpClient client_smtp = new SmtpClient("smtp.gmail.com", 465);
            client_smtp.UseDefaultCredentials = true;
            client_smtp.Send(message);

    mais je ne sais pas où rentrer le password du destinataire car j' imagine que pour envoyer un mail je dois entrer le mot de passe quelque part

    bon dimanche à vous

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Bon j'ai toujours les mêmes types d'erreurs

    suite au code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    MailAddress expediteur = new MailAddress("A@hotmail.com");
     MailAddress destinataire = new MailAddress("B@gmail.com");
       MailMessage message = new MailMessage(expediteur, destinataire);
     
            message.Subject = "sujet du mail";
            message.Body = "Bonjour";
     
            SmtpClient client_smtp = new SmtpClient("smtp.live.com", 25);
     
         client_smtp.UseDefaultCredentials =  false;
            NetworkCredential info = new NetworkCredential("A@hotmail.com", "password");
     
            client_smtp.Credentials=info;
     
                client_smtp.Send(message);

    messaged 'erreur :

    Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu 65.55.172.254:25

  15. #15
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Plusieurs FAI bloquent le port 25. Essaie avec 587(en SSL)

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous!

    c 'est bon ça marche, il faut definir la propriete "EnableSsl"

    voilà le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        protected void envoie_mail(object sender, EventArgs e)
        {
            MailAddress expediteur = new MailAddress("A@gmail.com");
            MailAddress destinataire = new MailAddress("B@hotmail.com");
            MailMessage message = new MailMessage(expediteur, destinataire);
     
            message.Subject = "sujet du mail";
            message.Body = "Bonjour";
             SmtpClient client_smtp = new SmtpClient("smtp.gmail.com", 587);
            client_smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
            client_smtp.EnableSsl = true;
            client_smtp.UseDefaultCredentials =  false;
      NetworkCredential info = new NetworkCredential("A@gmail.com", "passw");
     
            client_smtp.Credentials=info;
     
                client_smtp.Send(message);
     
     
     
     
     
        }
    Merci pour vos aides!!

    bonne semaine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/08/2007, 11h04
  2. Réponses: 9
    Dernier message: 04/05/2006, 17h33
  3. Recuperation d'une chaîne dans un fichier
    Par black is beautiful dans le forum Windows
    Réponses: 3
    Dernier message: 20/03/2006, 18h57
  4. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26
  5. Réponses: 4
    Dernier message: 01/09/2004, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo