services net generate from example entre diferencia create consumir asp.net .net xml web-services wsdl

generate - Cambie WSDL generado por ASP.NET para un servicio web ASP.NET



web service.net 2015 (3)

Creo que el XmlElement(IsNullable = true) hará el trabajo:

using System.Xml.Serialization; [WebMethod] public string MyService([XmlElement(IsNullable = true)] string arg) { return "1"; }

EDIT [VB version]

Imports System.Xml.Serialization Public Function MyService(<XmlElement(IsNullable:=True)> ByVal arg As String) As String Return ("1") End Function

¿Hay alguna manera de cambiar la forma en que asp.net genera elementos en el WSDL generado a partir de un archivo .asmx? Específicamente, parece marcar todos los elementos minoccurs = "0" y hay algunos elementos que quiero que sean minoccurs = "1" (también conocido como campos obligatorios).

Uno de estos es un argumento para el servicio web (por ejemplo, foo (arg1, arg2) donde quiero que arg2 se genere en el WSDL como minoccurs = "1") y el otro es un campo particular en la clase que corresponde a arg1. ¿Debo renunciar a la generación automática de WSDL y adoptar un enfoque de "contratar primero"?


El uso de XMLElement (IsNullable = true) genera minOccurs = 1, pero también genera en WSDL nillable = "true", lo cual es indeseable.


La única forma que conozco (salvo la actualización a WCF) es usar el atributo [XmlSchemaProvider]. Esto le permite indicar un método que devolverá el esquema que se emitirá como parte del WSDL.

Para cuando llegue a este punto, puede que le resulte mejor simplemente escribir su propio WSDL, a mano, para que no tenga que preocuparse acerca de cómo obligar a .NET a escribirlo por usted. Simplemente colocaría el WSDL en una ubicación conocida en un sitio web (posiblemente el mismo sitio que el servicio), y luego les diría a sus clientes que utilicen http: //url/service.wsdl en lugar de service.asmx? Wsdl.