Avatar billede simsen Mester
14. november 2011 - 15:24 Der er 3 kommentarer og
1 løsning

Remoting Stop Server

Hej,

Jeg bruger Arnes remoting eksempel (den udvidede): http://www.eksperten.dk/guide/86.

Nu til selve serverdelen, har jeg valgt at bruge en winform (der skal ske forskellige ting på selve serveren af og til)....

Af samme grunde, vil jeg gerne kunne stoppe og starte serveren, som det nu lige passer. Dertil har jeg forsøgt følgende:

public Server()
        {
            InitializeComponent();
            try
            {
                RemotingConfiguration.Configure("Server.exe.config", false);
                lblServerRunning.Text = "Serveren er startet";
            }
            catch
            {
                lblServerRunning.Text = "Serveren er stoppet.";
            }

            this.Resize += new EventHandler(Server_Resize);
            notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
        }

private void btnStartServer_Click(object sender, EventArgs e)
        {
            try
            {
                RemotingConfiguration.Configure("Server.exe.config", false);

                lblServerRunning.Text = "Serveren er startet";
                btnStopServer.Visible = true;
                btnStartServer.Visible = false;
            }
            catch
            {
                lblServerRunning.Text = "Serveren er stoppet.";
            }
        }

        private void btnStopServer_Click(object sender, EventArgs e)
        {
            //Hvordan stopper jeg serveren - nedenforviste virker ikke og jeg kan ikke starte serveren igen.
            // do this to unregister the channel
            IChannel[] regChannels = ChannelServices.RegisteredChannels;

            for (int i = 0; i < regChannels.Length; i++)
            {
                IChannel channel = (IChannel)ChannelServices.GetChannel(regChannels[i].ChannelName);

                ChannelServices.UnregisterChannel(channel);
            }

            lblServerRunning.Text = "Serveren er stoppet.";

            btnStopServer.Visible = false;
            btnStartServer.Visible = true;
        }

Selve stop serveren virker ikke....Når jeg har klikket på knappen og forsøger via klienten at tilgå serveren, får jeg at vide, at den er åben og tilgængelig (den henter også ting fra metoden og dermed databasen).

Hvis jeg så (efter at have klikket på stop knappen først) klikker på start knappen, får jeg at vide, at "Navnet på fjernprogrammet, 'TimeRegServer', er allerede indstillet."

Så det jeg har brug for, er at kunne stoppe serveren, så klienterne får en "Server nægtet adgang" meddelelse, indtil serveren igen bliver startet. Hvordan gøres dette?

mvh
simsen :-)
Avatar billede arne_v Ekspert
15. november 2011 - 01:29 #1
UnregisterChannel burde virke.

Har du checket at:
- du kommer ind i den loekke
- faar kaldt UnregisterChannel
- at hvis kalder en gang mere kommer du ikke ind i loekken
- at det ikke bare er et spoergsmaal om lidt forsinkelse
?

Er det SAO singleton?
Avatar billede arne_v Ekspert
15. november 2011 - 01:30 #2
http://stackoverflow.com/questions/4534686/stop-net-remoting

http://www.codeproject.com/KB/IP/stoppingremotingservice.aspx

bruger ogsaa UnregisterChannel omend den sidste ogsaa har andre vaaben i arsenalet
Avatar billede simsen Mester
15. november 2011 - 15:12 #3
Hej Arne,

Du har fuldstændig ret...den burde virke og virker også...altså når jeg giver mig selv en smule tålmodighed og venter ca. 30 sekunder inden jeg klikker på min "Test forbindelse" knap igen. Der står også i dit link til codeproject hvorfor (hvis nogen skulle være interesseret).

Smid et svar og tak for hjælpen :-)
Avatar billede arne_v Ekspert
15. november 2011 - 15:19 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester