2011-03-14 9 views
6

Tengo un servicio web ASMX configurado para usar el método HTTP GET. Los métodos simples que toman los parámetros básicos String e Int están funcionando bien, y puedo llamar al MyService.asmx/MethodName?Param=Value y obtener una respuesta en XML.Métodos con tipos anulables que no funcionan en el servicio web ASMX usando GET

Sin embargo, cuando tengo un método que tiene un Int anulable (es decir int?), me sale este error:

< Nombre de método> Servicio Web nombre del método no es válido.

El mensaje de error es confuso, ya que el método existe, pero no en el ámbito GET. Supongo que esto se debe a que un tipo que admite nulos es demasiado complejo para pasarlo a través de la URL, pero no puedo encontrar ninguna documentación o publicaciones de SO sobre esto.

Aprecio que los tipos complejos como listas o clases personalizadas, etc. no funcionen usando GET, pero hubiera supuesto que un simple nullable int o nulo datatime podría manejarse de forma nativa, simplemente detectando si se omitió de la URL. ¡Adivina que no es tan simple!

Cualquier consejo o solución alternativa sería muy apreciada.

Gracias, Tim

Respuesta

1

anulable int no es demasiado complejo. debe producir

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

en WSDL. Consulte this post. El error podría ser por algo más, tal vez?

0

Debe usar json text si tiene tal int? argumento porque es un tipo de objeto no primitivo. El error es engañoso porque el servicio existe.

si tiene int? a como parámetro debe enviar "{'a': null}" como contenido al servidor o algún entero en lugar de nulo.

Cuestiones relacionadas