16 Φεβρουαρίου 2006

Συντονισμός του Server και του client στο ίδιο Version του .Net Framework

Σε πολλές περιπτώσεις χρειάζεται ο Server και ο client της εφαρμογής μας να τρέχουν στο ίδιο Version του .Net Framework.
Μία πολύ κλασσική περίπτωση είναι κατά το Serialization ενός Dataset, σε ένα πολύ συχνό σενάριο που κάποιο WebService κάνει WriteXML σε byte() και το επιστρέφει στον Client.
Αν στη περίπτωση πχ, που ο Server έχει εγκατεστημένη (και default) την έκδοση του .Net Framework 2.0 και ο client την έκδοση 1.1 ή 1.0 τότε όταν ο client κάνει deserialization (ReadXML) το Dataset, παίρνει το ακόλουθο σφάλμα :

System.Runtime.Serialization.SerializationException: Type is not resolved for member System.Data.SerializationFormat, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.

Για να συντονίσουμε την εφαρμογή μας έτσι ώστε ο client και ο server να χρησιμοποιούν το ίδιο version του .Net FrameWork πρέπει να διαμορφώσουμε το Configuration file (Web.Config για τον Server,app.Config για τον client) όπως πιο κάτω (ΠΡΟΣΟΧΗ Case Sensitive):

<configuration>
<startup>
<requiredruntime version="v1.0.3705" imageversion="v1.0.3705">
<supportedruntime version="v1.1.4322">
<supportedruntime version="v2.0.50727">
<supportedruntime version="v1.0.3705">
</startup>
</configuration>

Το χρειάζεται μόνο αν πρόκειται για verions 1.0, διαφορετικά λειτουργεί το κατά τη σειρά που το γράφουμε. ΠΧ στο πιο πάνω παράδειγμα θα προτιμήσει το 1.1 μετά το 2.0 και μετά το 1.0.

Θα μπορούσε να έχει δηλωθεί μόνο ένα version όπως πιο κάτω:

<startup>
<supportedruntime version="v1.1.4322">
</startup>

Εδώ δεν χρειάζεται το requiredRuntime γιατί το version είναι 1.1, ενώ δεν θέλουμε να τρέξει η εφαρμογή σε άλλο Framework εκτός από το 1.1.
Αν δεν υπάρχει εγκατεστημένο τότε κατά την εκκίνηση παίρνουμε σφάλμα που ζητάει την αντίστοιχη έκδοση του .Νet Framework.

Για να δείτε ποιά versions του .Net Framework είναι εγκατεστημένα και default στο σύστημα, μπορείτε να πάτε στα properties του Default Web Site του IIS στο Tab ASP.NΕΤ στο ASP.Net Version.