I am trying to consume a web service specified using WSDL by creating a WCF proxy using svcutil.exe, but the WSDL specifies that some of the operations have parameters that are optional (minOccurs="0"), for example:
<xs:element minOccurs="0" maxOccurs="1" name="meetingId" type="xs:int" />
Unfortunately, the generated proxy does not allow me to not specify the values (the parameters are not nullable), and there are no "specified" fields as part of the call to instruct the proxy that no value should be sent.
Is there any way to use svcutil to generate a proxy that would allow me to do this?
(On a side note, I noticed through my research that others were able to generate these extra "specified" fields correctly using the "Add Service Reference" feature, but for whatever reason Visual Studio doesn't appear to want to generate the proxy after I add the reference (nothing happen afterwards))
Command Used: svcutil http://sas-int.elluminate.com/site/external/adapter/default/v1/webservice.wsdl /internal /n:*,Elluminate.WebService.WebServiceProxy /o:WebServiceProxy.cs /config:App.config /nologo
Best Answer
I would guess the client proxy class generated by
svcutil
has a field/property calledmeetingId
of typeint
- right? Yes, this is non-nullable - but I bet you also have a boolean field/property calledmeetingIdSpecified
- only if this is set totrue
will the service actually look at it; if you don't set it, then the service will not look at the value, so it's almost as if it whereNULL
.Also - you didn't specify the field to be nullable in your XSD, either - you specified it to be optional. To make it nullable, use this syntax here:
See the "nullable" attribute? That's the one used for making a field really nullable - you can now have an entry like this in your XML:
Marc