Many developers do not know what goes behind the hood or how to customise the generated WSDL when required.
I’ve listed some salient ones that may be of help…
Apply
[WebService(Namespace = "http://www.johannes.org/webservice/2011/11/03/",Name="ExtendingWebService", Description="version 1.0")]
to the class to get these:
<wsdl:definitions targetNamespace="http://www.johannes.org/webservice/2011/11/03/"><wsdl:documentation>version 1.0</wsdl:documentation>...<wsdl:service name="ExtendingWebService">
Apply
[WebMethod(Description="This web service is a typical one")]to the operation to get this:
<wsdl:operation name="..."><wsdl:documentation>This web service is a typical one</wsdl:documentation>...</wsdl:operation>
Apply
[return: System.Xml.Serialization.XmlElementAttribute("ReturnedStatus")]
to the returned type from the operation to get this:
<s:element name="..."><s:complexType><s:sequence><s:element name="ReturnedStatus" type="..."/></s:sequence></s:complexType></s:element>
Add the following
[XmlAnyElement()] System.Xml.XmlElement[] Any,[XmlAnyAttribute()] System.Xml.XmlAttribute[] AnyAttr
to the operation parameter to get this:
<s:any maxOccurs="unbounded" minOccurs="0"/>...<s:anyAttribute/>
Apply
[XmlElement("MyElementName")]to the parameter/ property to get this:
<s:element name="MyElementName" type="..."/>
Apply
[XmlArray("MyChildren")][XmlArrayItem("Child")]
to a parameter/ property of array type to get this:
<s:element name="MyChildren" type="tns:ArrayOfMyClass"/>...<s:complexType name="ArrayOfMyClass"><s:sequence><s:element name="Child" nillable="true" type="tns:MyClass"/></s:sequence></s:complexType>
Apply
[System.ComponentModel.DefaultValue(-1)]
to a parameter/ property to get this:
<s:element ... minOccurs="0" default="-1"/>
Apply
[XmlElementAttribute(DataType = "date")]to a DateTime parameter/ property to get this:
<s:element ... type="s:date" maxOccurs="1" minOccurs="1"/>
Other points of interest are:
- Enum type will result in enumeration in XML
- Custom classes will result in complex types in XML
- The input parameters to an operation will aggregate into a complex type in XML
- Value types (e.g. int, double, DateTime) will always result in minOccurs=”1” and maxOccurs=”1” for that element
- Reference types (e.g. string) will always result in minOccurs=”0” and maxOccurs=”1” for that element
- Nillable types (e.g. int?, DateTime?) will result in nillable=”true” for that element
- Setting XmlElement(IsNullable=true) will result in minOccurs=”1” regardless of whether the applied type is value or reference
No comments:
Post a Comment