Ανακάλυψα σήμερα που το GetList() μέθοδο σε lists.asmx υπηρεσία Web πρέπει να αποκαλείται πολύ προσεκτικά ή είναι επιρρεπείς να ρίξει ένα μυστηριώδες εξαίρεση "Αξία δεν μπορεί να είναι null" (και αυτό υποθέτοντας ότι μπορείτε να λάβετε παρελθόν το ακόμη χειρότερο μήνυμα γενικού σφάλματος, "Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ δημιουργήθηκε.") Ειδικά, Βρήκα ότι δεν μπορείτε να δώσετε οποιοδήποτε είδος πρόθεμα σχετικά με τη μέθοδο GetList. Το ακόλουθο απόσπασμα jQuery διαφωτίζει το σημείο:
Αν το κάνετε που, η υπηρεσία web ανταποκρίνεται με "Αξία δεν μπορεί να είναι null" σύμφωνα με αυτό fiddler-παρείχε την απομαγνητοφώνηση HTTP:
<?XML έκδοση = 1.0»" κωδικοποίηση = "utf-8"?>
<σαπούνι:Φάκελος
xmlns:σαπούνι ="http://schemas.xmlsoap.org/SOAP/Envelope/"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance”
xmlns:xsd ="http://www.w3.org/ 2001/σχήματος XML"><σαπούνι:Οργανισμός>
<σαπούνι:Σφάλμα>
<faultcode>σαπούνι:Διακομιστή</faultcode>
<faultstring>
Εξαίρεση του τύπου «Microsoft.SharePoint.SoapServer.SoapServerException’ ρίχτηκε.
</faultstring>
<λεπτομέρεια>
<errorstring xmlns ="http://schemas.microsoft.com/SharePoint/SOAP/">
Αξία δεν μπορεί να είναι null.
</errorstring>
</λεπτομέρεια>
</σαπούνι:Σφάλμα>
</σαπούνι:Οργανισμός>
</σαπούνι:Φάκελος>
Φυσικά, πιθανώς δεν θα προσθέτετε πρόθεμα "s0" για τη δική σας, αλλά μερικά εργαλεία είναι επιρρεπείς να κάνουμε (όπως το Eclipse).
Αυτό είναι όλο και πιο συγκεχυμένη / απογοητευτικό επειδή άλλες μεθόδους ανέχεται προθέματα. Για παράδειγμα, το GetListCollection μέθοδος δεν πειράζει εάν είναι γαλλική, ακόμη και με ανοησίες προθέματα όπως "xyzzy":
Αυτό "η τιμή δεν μπορεί να είναι null" φαίνεται αρκετά κοινά με lists.asmx, οπότε ελπίζω αυτό θα βοηθήσει κάποιος στο μέλλον.
</Τέλος>
Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin
Ένα μικρό σχόλιο
Εγώ λεπτός ότι you δεσποινίs “S0” πρόθεμα για lisname
Δοκιμάστε αυτό
Εργασίες