Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Network Service in trouble with local "writes"

Îåêßíçóå áðü ôï ìÝëïò jopil. Τελευταία δημοσίευση από το μέλος jopil στις 22-09-2013, 19:36. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-09-2013, 12:32 74394

    Network Service in trouble with local "writes"

    Το παρακάτω τμήμα κώδικα, αποτελεί μέρος ενός service που εγκαθίσταται με networking credentials,

    και τον κατάλληλο local και server accounts πλήρως εναρμονισμένους. Δουλεύει κανονικά και πάει

    και γράφει σε ένα δικτυακό log_file ό,τι log_data παράγονται τοπικά. Επίσης, όταν ξεκινάει, πάει και 

    ελέγχει εάν υπάρχει ένα τοπικό directory για logging, ώστε όταν δεν υπάρχει δικτυακή επικοινωνία 

    να γράφει τοπικά τα log_data, και εάν δεν υπάρχει το τοπικό αυτό directory το δημιουργεί με τον εξής

    κώδικα που επίσης δουλεύει κανονικά:

    Try

    If Not Directory.Exists("c:\logs\") Then

       Directory.CreateDirectory("c:\logs\")

    End If

    Catch ex As Exception

    End Try 

     

    Το πρόβλημα είναι ότι παρ' ότι το local directory δημιουργείται κανονικά από το service, το ίδιο 

    το service, όταν προκύψει δικτυακό πρόβλημα (κάνω disable ας πούμε την σύνδεση), ενώ την

    κάνει track την έλλειψη δικτύου, εν τούτοις δεν "γράφει με τίποτα" τα data του στο τοπικό

    log_file του local directory. Τι δεν γίνεται καλά; Ευχαριστώ.

    Γιάννης Πηλιούνης  ([email protected])

    (Δεν μπορώ να κάνω msgbox(ex.tostring) διότι για να πετάξει το msgbox πρέπει να είναι

    local_service & interact_with_desktop, αλλά όταν δηλώνεται ως τέτοιο, τότε γράφει

    κανονικά σε local mode και έτσι το τι δεν πάει καλά σε local επίπεδο με την δικτυακή 

    φύση του service enabled, παραμένει άγνωστο.)

     

    Dim fs1 As StreamWriter

    If My.Computer.Network.Ping("10.100.200.20") = True Then

    ' write data to network log_file

    Else

                Try

                    If File.Exists("c:\LOGS\USB_Log.txt") = False Then

                        fs1 = File.CreateText("c:\LOGS\USB_LOG.txt")

                        fs1.Write(content & vbCrLf)

                        fs1.Close()

                        fs1 = Nothing

                    Else

                        fs1 = File.AppendText("c:\LOGS\USB_Log.txt")

                        fs1.Write(content & vbCrLf)

                        fs1.Close()

                        fs1 = Nothing

                    End If

                Catch ex As Exception

                    ' MsgBox(ex.ToString)

                End Try

     End If 

  •  19-09-2013, 14:56 74396 σε απάντηση της 74394

    Απ: Network Service in trouble with local "writes"

    Δεν υπάρχει κανένας απολύτως λόγος να γράψεις το δικό σου Logging όταν και το .NET έχει τους δικούς του μηχανισμούς αλλά και υπάρχουν άλλες βιβλιοθήκες όπως το log4net.

    Όσον αφορά το ίδιο το πρόβλημα, δοκίμασες να κάνεις debug? Επίσης, είσαι σίγουρος ότι έχεις δικαιώματα να γράψεις στο Folder? Λες ότι το folder δημιουργείται από το ίδιο το service. Πού γίνεται αυτό? Δεν το δείχνεις στον κώδικα. Το φτιάχνει το service όταν εκτελείται ως SERVICE και συνεπώς με μειωμένα credentials ή το έτρεξες από command line?

    Μαντεύω ότι αλλού φτιάχνεις το folder και όταν τρέχεις το service, το account που χρησιμοποιείς δεν έχει δικαίωμα να γράψει εκεί.

     Για να δεις τί συμβαίνει, ξεκίνα το service και μετά κάνε attach από το Visual Studio για μπορέσεις να κάνεις debug και να βάλεις breakpoints. Από το μενού Debug,  διάλεξε το Attach To Process, τσέκαρε το Show Processes from All Users και μετά διάλεξε το service σου από τη λίστα

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-09-2013, 18:49 74398 σε απάντηση της 74396

    Απ: Network Service in trouble with local "writes"

    Το directory φτιάχνεται από το ίδιο το  service στην αρχική ρουτίνα OnStart. Ο κώδικας είναι αυτός που παραθέτω

    μετά την 1η παράγραφο του post. To Debug δυστυχώς δεν δείχνει το παραμικρό. Εκτός αν δεν έχει γίνει το attach

    σωστά. Θα το ξαναδοκιμάσω και θα ενημερώσω . Ευχαριστώ πολύ....

     

    ........................................................

    Επανελέγχθησαν όλα τα βήματα attach & debug, με πληθώρα break_points και επικράτησε απόλυτη σιωπή. Μόλις

    κάνω enable την δικτυακή σύνδεση, πάει και γράφει κανονικά στο network drive και το βλέπω. Μόλις κάνω disable 

    την σύνδεση δεν κάνει απολύτως το παραμικρό και δεν "πετάει" κανένα notification. Όλα γίνονται στο VS-2005.

    Δοκίμασα και στο VS-2012. Τα ίδια. Πρέπει το service,  μέσω του λειτουργικού, με κάποιο μυστήριο τρόπο, να 

    πέφτει σε αδράνεια όταν χαθεί η δικτυακή σύνδεση και να επαναλειτουργεί όταν το λειτουργικό την βλέπει πάλι

    ζωντανή. Το ίδιο το service εκτελεί απλά ένα απλούστατο WMI query σε απολύτως local επίπεδο μηχανής και

    το αποτέλεσμα το στέλνει απλά δικτυακά σε έναν log_server. Όποια καλή άλλη ιδέα δεκτή.................. 

  •  22-09-2013, 19:36 74408 σε απάντηση της 74398

    Απ: Network Service in trouble with local "writes"

    ΤΕΛΙΚΑ, ΜΕΤΑ ΑΠΟ ΤΡΕΙΣ ΜΕΡΕΣ ΨΑΞΙΜΟ, αναδύθηκε η προφανής απάντηση. Το τοπικό directory στο οποίο θα πάει να γράψει το Networking-Service ΠΡΕΠΕΙ ΝΑ ΓΙΝΕΙ SHARE. ΜΟΛΙΣ ΓΙΝΕΙ SHARED, ΤΟΤΕ ΤΟ SERVICE ΓΡΑΦΕΙ ΑΜΕΣΩΣ ΚΑΙ ΣΕ ΤΟΠΙΚΟ ΕΠΙΠΕΔΟ. Η απάντηση φάνηκε με σκέψη επάνω στο εξής: Υποχρέωσα το service να πάει να γράφει και τοπικά αμέσως μετά που γράφει επιτυχημένα δικτυακά. Και πάλι δεν έγραφε. Η μόνη διαφορά που υπήρχε στα δύο directory, ήταν ότι το δικτυακό είχε γίνει shared από την αρχή υποχρεωτικά. Μόλις έκανα shared και το τοπικό log directory, τότε έγραψε κανονικά. Ευχαριστώ τον Π. Καναβό για την πρώτη απάντησή του. Γιάννης Πηλιούνης 
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems