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

C# Discussion :

[c#] Service problème


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [c#] Service problème
    Salut à tous,

    j'ai un soucis avec un service Windows, quand je lance en console(debug) ca fonctionne mais en service impossible de me connecter sur le serveur. Pour je n'ai pas de log d'erreur dans les journaux de windows.

    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
    static void Main()
            {
    #if DEBUG
     
                Server S = new Server();
                S.Start();
    #else
     
     
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
    			{ 
    				new ServiceTest() 
    			};
                ServiceBase.Run(ServicesToRun);
    #endif
            }
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
        class ServiceTest: ServiceBase
        {
            private Server Server = null;
            public ServiceTest()
            {
                this.InitializeComponent();
            }
     
            private void InitializeComponent()
            {
                this.CanShutdown = true;
                this.ServiceName = "Service.Test";
     
            }
     
            protected override void OnStart(String[] Args)
            {
                if (this.Server == null)
                {
                    this.Server = new Server();
                }
                this.Server.Start();
            }
            protected override void OnStop()
            {
                if (this.Server != null)
                {
                    this.Server.Stop();
                }
            }
            protected override void OnShutdown()
            {
                if (this.Server != null)
                {
                    this.Server.Stop();
                }
                this.Server = null;
            }
        }
    Si vous avez une idée... je désespère.

    Merci d'avance.

    Cordialement,
    NeoKript

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    il faut partir sur un autre thread depuis onstart dans un service
    est-ce le cas de ta classe server ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Salut,

    c'est bien le cas :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public void Start()
            {
                Log.Write("Démarrage du serveur !");
                this._Thread = new Thread(new ThreadStart(this.StartOnThread));
                this._Thread.Start();
     
            }
            public void StartOnThread()
            {
                while (true)
                {
                    List<Socket> read = new List<Socket>();
                    List<Socket> write = new List<Socket>();
                    for (int i = 0; i < this._clients.Count; i++)
                    {
                        read.Add(this._clients.ElementAt(i).Key);
                        if (this._clients.ElementAt(i).Value.Size > 0)
                            write.Add(this._clients.ElementAt(i).Key);
                    }
                    Socket.Select(read, write, null, 5);
                    if (read.Count > 0)
                    {
                        for (int i = 0; i < read.Count; i++)
                        {
                            try
                            {
     
                                if (this._clients[read[i]].IsServer)
                                {
                                    this.Accept();
                                }
                                else
                                {
                                    this.Read(read[i]);
                                }
                            }
                            catch (Exception)
                            {
                                read[i].Close();
                            }
                        }
     
                    }
                    if (write.Count > 0)
                    {
                        for (int i = 0; i < write.Count; i++)
                        {
                            try
                            {
                                this.Write(write[i]);
                            }
                            catch (Exception)
                            {
     
                            }
     
                        }
                    }
                    this.ClearDisconnectSocket();
                }
            }
    Merci d'avance

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    manque de try catch avec écriture des erreurs dans un fichier je pense
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    manque de try catch avec écriture des erreurs dans un fichier je pense
    Je viens de mettre un try..catch sur tout le block et pas mieux !
    Rien des les journaux d'évènement à part "Démarrage du serveur !" mais impossible de se connecter sur la Socket ! S'il y avai un problème de bind sur le port ou autre, je le saurais pourtant ac les try catch Log.Write()...

    Ma classe ServiceTest te semble correct ?

    Merci

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    oui


    sinon essaye de mettre des écritures un peu partout pour voir si ca passe partout ou si ca s'arrete entre 2 parties de code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/08/2008, 10h00
  2. Réponses: 6
    Dernier message: 05/12/2007, 17h55
  3. Orbacus Naming Service problème
    Par anas.eh dans le forum CORBA
    Réponses: 5
    Dernier message: 16/11/2007, 21h43
  4. Web Services - Problème de communication serveur/client
    Par vern's dans le forum Web & réseau
    Réponses: 9
    Dernier message: 27/08/2007, 10h06
  5. [C# 2.0, Service]Problème service et Timer
    Par boleduch dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2006, 15h00

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