2011-03-14 8 views
6

Ho un servizio Web ASMX configurato per utilizzare il metodo HTTP GET. I metodi semplici che richiedono parametri String e Int di base funzionano correttamente e posso chiamare MyService.asmx/MethodName?Param=Value e ottenere una risposta in XML.Metodi con tipi Nullable che non funzionano nel servizio Web ASMX tramite GET

Tuttavia, quando ho un metodo che ha un annullabile Int (cioè int?), ottengo questo errore:

< Nome metodo> Web Service nome di un metodo non è valido.

Il messaggio di errore è confuso, poiché il metodo esiste, non solo nell'ambito GET. Presumo questo perché un tipo nullable è troppo complesso per essere passato tramite l'URL, ma non riesco a trovare alcuna documentazione o post SO su questo.

Apprezzo che tipi complessi come elenchi o classi personalizzate ecc non funzionino con GET, ma avrei assunto che un semplice valore nullable int o nullable datetime potesse essere gestito in modo nativo, semplicemente rilevando se è stato omesso dall'URL. Indovina non è così semplice!

Qualsiasi consiglio o soluzione alternativa sarebbe molto apprezzato.

Grazie, Tim

risposta

1

annullabile int non è troppo complessa. dovrebbe produrre

<s:element minOccurs="1" maxOccurs="1" name="Param" nillable="true" type="s:int" /> 

in WSDL. Controlla this post. L'errore potrebbe essere per qualcos'altro, forse?

0

È necessario utilizzare JSON testo se si dispone di tale int? argomento perché è un tipo di oggetto non di tipo primitivo. L'errore è fuorviante perché il servizio esiste.

se avete int? a come parametro devi inviare "{'a': null}" come contenuto al server o qualche intero invece di null.

Problemi correlati