Χρησιμοποιώ DIME attachments σε ένα φίλτρο για να πιάνω τα περιεχόμενα κάθε soap message που γυρνάνε τα web services, να τα συμπιέζω και να τα βάζω σαν dime attachments στο respone (αφού καθαρίσω το περιεχόμενο του αρχικού response).
Όσο το μέγεθος του DIME είναι μικρό, όλα δουλεύουν κανονικά. Όταν περάσει κάποιο όριο (μου χτυπάει στα 600Kb), o client μου δίνει το εξής (την στιγμή που πάει να κάνει deserialize το response):
Microsoft.Web.Services2.Dime.DimeFormatException: WSE349: In the record uuid:09de223d-e7e1-4a78-979a-75a6cbff4970, the padding in the Data field is incorrect: the byte found in the padding field is -1, which should be 0.
Ύποψιάζομαι, απ' όσο έχω καταλάβει, ότι επειδή το attachment είναι μεγάλο, πάει να το σπάσει σε κομμάτια και να το κάνει κάποιου είδους stream; Το οποίο ίσως χρειάζεται κάποια ειδική ρύθμιση για να το πιάνει σωστά ο proxy;
Διαβάζω βέβαια ότι τα DIME τείνουν να καταργηθούν και πάνε σε MTOM, αλλά απ' όσο βλέπω αυτά υποστηρίζονται από το WSE 3.0 => .Net 2.0 το οποίο δεν παίζει.
Τα δεδομένα που επιστρέφω είναι datasets τα οποία θέλω να μεταφέρω συμπιεσμένα χωρίς να χαλάσω τους τύπους επιστροφής των web methods (δεν θέλω να τα γυρνάω σε byte(), αυτό το έχω υλοποιήσει ήδη, ψάχνω για κάτι πιο transparent).
Υπάρχει κάποια λύση - ιδέα;
PS: Έχω αυξήσει το MaxRequestLength και στο messaging και στο httpRuntime, το response φεύγει κανονικά από το service και χτυπάει στον client μόλις το πιάνει ο WSEproxy και πριν το αγγίξω εγώ.
Χρήστος Γεωργακόπουλος