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

Remoting και BinaryFormatter Exceptions

Σε ένα πρόσφατο project στο οποίο συμμετείχα, έπεσα επάνω σε ένα πολύ μυστήριο System.Runtime.Serialization.SerializationException το οποίο προέκυπτε κατά τη διάρκεια κλήσεων που γίνονταν με remoting. Συγκεκριμένα, αυτό που έβλεπα ήταν το εξής:

An unhandled exception of Type 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll.  
Additional Information:  BinaryFormatter version incompatibility.  Expected Version 1.0. Received Version 1008738336.1684104552

Φυσικά μου προκάλεσε την περιέργεια, γιατί δεν ακουγόταν φυσιολογικό. Η εγκατάσταση του .NET Framework και στον server και στον client ήταν καθαρή, και τίποτα δεν υπήρχε που να υποδεικνύει οτι κάτι δεν πήγαινε καλά με τον BinaryFormatter. Η κλήση ήταν ιδιαίτερα απλή. Ψαχνοντας λοιπόν λίγο, βρήκα αυτό εδώ το blog post το οποίο εξηγεί τα πράγματα. Για όσους βαριούνται να διαβάζουν, να το εξηγήσω με απλά λόγια:

Το error που γυρίζει ΔΕΝ ΕΧΕΙ ΚΑΜΜΙΑ ΣΧΕΣΗ με το πραγματικό πρόβλημα, γι'αυτό μην ψάχνετε τι συμβαίνει με τον BinaryFormatter σας. (Δεν αποκλείουμε να έχετε πρόβλημα εκεί, αλλά το πιθανότερο είναι να μην έχετε).

Στη δική μου περίπτωση, προσπαθούσα μέσα από το .config αρχείο να κάνω impersonate ένα χρήστη χρησιμοποιώντας λογ/σμό ο οποίος δεν υπήρχε στην εγκατάσταση του remoting server που παρουσίαζε το πρόβλημα. Φυσικά, με την πρώτη κλήση ο server θα έπρεπε να γυρίσει error. Ομως, πώς γυρνάει το error ο remoting server;

Κάπως έτσι:

HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/5.0
Date: Mon, 22 Apr 2002 21:25:44 GMT
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 3286

<html>
  <head>
  <title>Configuration Error</title>
  <style>
  ...

Ομως, εκεί μπερδεύονται τα πράγματα. Ο binary formatter που βρίσκεται στη μεριά του client νομίζει οτι αυτό είναι ένα binary encoded remoting message και προσπαθεί να το διαβάσει. Το πρώτο πράγμα που αναμένει είναι το version 1.0 αλλά αντί για αυτό βρίσκει το string [html]. Στη δική του γλώσσα, αυτό μεταφράζεται σε αυτό τον περίεργο αριθμό έκδοσης που σας λέει οτι βρήκε. Νομίζει λοιπόν οτι οι εκδόσεις των binaryFormatters στον server και στον client δεν ταιριάζουν και τσουπ, νατο το μισητό error που καμμία σχέση δεν έχει με την πραγματικότητα.

Μην ξοδεύετε ώρες σε debugging χωρις νοημα αν σας συμβεί κάτι παρόμοιο, απλά διαβάστε το άρθρο που αναφέρω για να δειτε ένα τρόπο με τον οποίο μπορείτε να ανακαλύψετε την πραγματική αιτία του προβλήματος.


 

Έχουν δημοσιευτεί Τετάρτη, 6 Σεπτεμβρίου 2006 1:05 μμ από το μέλος cap
Δημοσίευση στην κατηγορία:

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

# Απ: Remoting και BinaryFormatter Exceptions

Σάββατο, 9 Σεπτεμβρίου 2006 10:34 μμ by Panagiotis Kefalidis
Δουλειά δεν είχε ο διάολος (Microsoft) έβγαζε λάθος messages..
Να μας παιδεύουν θέλουν..

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image