25 messaggi dal 11 aprile 2001
salve a tutti,
dovrei realizzare un Web Service che risponda indifferentemente tramite xml o Json, vorrei sapere se è possibile impostare il formato di uscita di un metodo a Runtime.

Ho trovato questa stringa:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]


ma deve essere scritta a monte del metodo, io invece vorrei che fosse il metodo stesso a modificare il tipo di output in base alle esigenze, è possibile?
E in base a quale discriminante dovrebbe decidere di serializzare in json piuttosto che in xml?

Ciao

Il mio blog
Homepage
25 messaggi dal 11 aprile 2001
un parametro che passo al web service
Non puoi. Il metodo migliore è duplicare i metodi e cambiare gli attributi facendoli poi eseguire il medesimo codice centralizzato.
In teoria puoi personalizzare gli attributi che la refleciton legge implementando ICustomAttributeProvider ma una volta che il servizio ha analizzato i metodi e gli ha dato un certo attributo, fa cache e non puoi più cambiare. Oppure puoi offrire due punti diversi, con due servizi rest diversi con gli attributi su xml o json a seconda.
Inoltre la tecnica del parametro non è un granchè. Dovresti prevedere per ogni metodo un parametro iniziale per discriminiare la risposta: molto brutto sia dal punto service oriented che di programmazione OO.

Purtroppo gli ScriptService sono molto limitati e sono il modo più brutto per fare un servizio REST o POX. Con WCF avresti potuto realizzare qualcosa di più automatico
Modificato da Ricciolo il 29 gennaio 2010 12.46 -

Ciao

Il mio blog
Homepage
25 messaggi dal 11 aprile 2001
Sei stato chiarissimo, più o meno, ma è colpa mia che sono alle prime armi :-)
Duplicherò i metodi, anche se questa possibilità del Json era solo un plus non richiesto dal cliente, per cui vedrò, era più una soddisfazione personale ecco :-)

Grazie mille

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.