Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Methodenaufruf funktioniert auf PC (Vista) allerdings nicht auf Server (Windows 2003)
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

Methodenaufruf funktioniert auf PC (Vista) allerdings nicht auf Server (Windows 2003)

beantworten | zitieren | melden

.Net Framework 2.0
Visual Studio 2008

PC - Windows Vista
Server - Windows 2003

Hallo,

ich habe folgendes Problem:
Ich habe einen Timer. Wenn dieser Timer auslöst, dann soll eine Methode aufgerufen werden, die Daten in eine Datenbank einträgt. Auf meinem Entwicklungs-PC funktioniert das alles wunderbar. Kopiere ich die .exe Datei auf meinen Windowsserver, auf dem die Anwendungen laufen soll, funktioniert der aufruf der Methode nicht. Es wird auch keine Fehlermeldung ausgespuckt, es passiert einfach gar nichts. So als hätte ich einen Breakpoint gesetzt.

Hier ist der Timer-Event-Code:


        void  _timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (_log.IsInfoEnabled)
            {
                _log.Info("Timer Elapsed");
            }
            _timer.Stop();

            if (_log.IsInfoEnabled)
            {
                _log.Info("Before InsertResultSet " + InputWordList.Count.ToString());
            }

           InsertResultSet();
         }

Hier ist der Code, der Methode "InsertResultSet":


        private void InsertResultSet()
        {
            if (_log.IsInfoEnabled)
            {
                _log.Info("Start Insert Pop Up");
            }

            if (!InProcess)
            {
                try
                {
                    InProcess = true;

                    using(FbConnection fbCon = new FbConnection(Properties.Settings.Default.ConnectionPopUp))
                    using(FbCommand fbCmd = new FbCommand("INSERT INTO tblInputWords (wordID, quantity, sourceID, point)"+
                        "VALUES (@wordID,@count,@sourceID, @point)"))
                    {
                        fbCon.Open();
                        FbTransaction fbTra = fbCon.BeginTransaction();
                        
                        fbCmd.Connection = fbCon;
                        fbCmd.Transaction = fbTra;

                        try
                        { 
                            for(int index = 0; index < InputWordList.Count;)
                            {
                                fbCmd.Parameters.AddWithValue("@wordID", InputWordList[index].WordId);
                                fbCmd.Parameters.AddWithValue("@count", InputWordList[index].Count);
                                fbCmd.Parameters.AddWithValue("@sourceID", InputWordList[index].SourceID);
                                fbCmd.Parameters.AddWithValue("@point", InputWordList[index].TimeStamp);

                                fbCmd.ExecuteNonQuery();

                                fbCmd.Parameters.Clear();
                                InputWordList.RemoveAt(index);
                            }

                            fbTra.Commit();
                        }
                        catch(Exception ex)
                        {
                            _log.Fatal(ex.Message + " - " + ex.StackTrace);
                        }
                        finally
                        {
                            fbTra.Dispose();
                            fbCon.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Fatal(ex.Message + " - " + ex.StackTrace);
                }
                finally
                {
                    InProcess = false;
                    _timer.Start();
                }
            }
            else
            {
                _timer.Start();
            } 
        }

Wie gesagt, funktioniert der Aufrauf der Methode auf meinem PC ohne Probleme. Auf meinem Server funktioniert das ganze nicht mehr. Alle anderen Funktionalitäten des Programmes funktionieren auf dem Server ohne Probleme. Hat jemand Ideen, an was das liegen könnte?

Vielen Dank
Grüße
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Dann halte die Anwendung mal im Debugger an ("Pause") und schau im StackTrace wo deine Anwendung rumgammelt (irgendwo muss es ja hängen)
private Nachricht | Beiträge des Benutzers
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

beantworten | zitieren | melden

Auf dem Server habe ich leider keinen Debugger
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
GarlandGreene
myCSharp.de - Member



Dabei seit:
Beiträge: 497
Herkunft: Emmerich, NRW

beantworten | zitieren | melden

wäre es möglich, daß die Konfigurationseinstellungen deiner Anwendung (Properties.Settings.Default, Standard-Konfigurationseigenschaften des Projekts) auf dem Server nicht existieren?
private Nachricht | Beiträge des Benutzers
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

beantworten | zitieren | melden

was meinst du mit Standard-Konfigurationseigenschaften? steh grad auf dem schlauch.
meinst du damit die settings, die in der app.exe.config drinnen sind? die datei ist auf dem server und auch angepasst.
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Zitat
Auf dem Server habe ich leider keinen Debugger
Hm... da gäbe es noch:
- Mehr logging
- Oder den debugger remote attachen.

[EDIT]
Evtl. bist du auch nur zu ungeduldig und läufst auf einen Timeout.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von jaensen am .
private Nachricht | Beiträge des Benutzers
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

beantworten | zitieren | melden

mhh...

es sollte ja als erstes in der methode was ins log-file geschrieben werden:


        private void InsertResultSet()
        {
            if (_log.IsInfoEnabled)
            {
                _log.Info("Start Insert Pop Up");
            }
...

aber im log-file wird eben dieser eintrag nicht geschrieben. und die if bedingung ist auch wahr.

ich glaube ich versuche mich mal mit remote debugging zu beschäftigen
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
koller
myCSharp.de - Member



Dabei seit:
Beiträge: 142

beantworten | zitieren | melden

Hallo davidG,

werden denn die log-Einträge aus _timer_Elapsed erzeugt?

Grüße, Koller.
private Nachricht | Beiträge des Benutzers
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

beantworten | zitieren | melden

ja,diese werden erzeugt
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
davidG
myCSharp.de - Member



Dabei seit:
Beiträge: 67

Themenstarter:

beantworten | zitieren | melden

ich habs. Ich hatte vergessen die FirebirdSql.Data.FirebirdClient.dll mit auf den Server zu kopieren. Jetzt funktioniert es.
Was ich aber nicht ganz verstehe, warum nichts ins Log File geschrieben wurde, weil der Befehl fürs logging ja vor den Firebird-Befehlen kommt.
„Ich erfand den Begriff «objekt-orientiert», und ich kann sagen, dass ich dabei nicht C++ im Sinn hatte.“ Alan Kay
private Nachricht | Beiträge des Benutzers
koller
myCSharp.de - Member



Dabei seit:
Beiträge: 142

beantworten | zitieren | melden

Hallo,

dann benenne die dll auf deinem PC um und schau, was beim Debuggen passiert.

Grüße, Koller.
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1.177

beantworten | zitieren | melden

und eifrig remote debuggen, System.Diagnostics.Debug mit z.B. DebugView verwenden und das Eventlog am Server nicht vergessen...
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers