Wcf: dotnet-svcutil without --serializer XmlSerializer fails with NullReferenceException

Created on 2 Aug 2018  路  6Comments  路  Source: dotnet/wcf

With version 1.0.0 of dotnet-svcutil, running dotnet svcutil AddCustomer.wsdl fails with the following output:

Microsoft (R) WCF Service Model Proxy Generation Tool for .Net Core platform
[dotnet-svcutil, Version 1.0.0]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to load metadata from 'C:\Path\To\AddCustomer.wsdl'.
Warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Object reference not set to an instance of an object.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.northgate-is.com/proiv/webservices/wsdl']/wsdl:portType[@name='AddCustomerPortType']
Warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://www.northgate-is.com/proiv/webservices/wsdl']/wsdl:portType[@name='AddCustomerPortType']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.northgate-is.com/proiv/webservices/wsdl']/wsdl:binding[@name='AddCustomerSoapBinding']
Warning: Cannot import wsdl:port
Detail: 
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.northgate-is.com/proiv/webservices/wsdl']/wsdl:service[@name='AddCustomerService']/wsdl:port[@name='AddCustomerPort']
Warning: No endpoints compatible with .Net Core apps were found.
Generating files...
Error: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services, or because all contracts/services were discovered to exist in --reference assemblies. Verify that you passed all the metadata documents to the tool.
If you would like more help, type "svcutil -h"

If i change the command to dotnet svcutil AddCustomer.wsdl --serializer XmlSerializer the errors disappear and the code generates correctly.

The dotnet svcutil --help output suggests that --serializer Auto (the default) "uses the XmlSerializer if [the Data Contract serializer] fails". That does not appear to be occurring in this case.

Note: This issue also affects svcutil shipped with the full .NET Framework. I previously reported this issue as https://developercommunity.visualstudio.com/content/problem/298090/svcutil-without-serializerxmlserializer-fails-with.html Since I just discovered that it also affects dotnet-svcutil I am reporting it here as well.

I haven't included AddCustomer.wsdl in this report, since the WSDL is not publicly available. I would be happy to send it in whatever way would be preferable. (Note: I attached the same file to the VS issue referenced above if you are able to access that.)

Thanks,
Kevin

bug tooling

Most helpful comment

I have the same problem

Object reference not set to an instance of an object.

Exception Stack Trace:

   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass1_0.<CreateGenericTask>b__0(IAsyncResult asyncResult)

inner Exception Stack Trace :


        at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)

inner Exception Stack Trace :

   at System.Xml.Serialization.ReflectionXmlSerializationReaderHelper.<>c__DisplayClass1_2`2.<GetSetMemberValueDelegateWithType>b__2(Object o, Object p)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.<>c__DisplayClass49_2.<WriteEncodedStructMethod>b__2(Object value)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteElement(ElementAccessor element, Boolean checkSpecified, Boolean checkForNull, Boolean readOnly, String defaultNamespace, Int32 fixupIndex, Int32 elementIndex, Fixup fixup, Member member)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElementsIf(Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Fixup fixup, CheckTypeSource checkTypeSource)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElements(Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup, List`1 checkTypeHrefsSource)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteEncodedStructMethod(StructMapping structMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.<>c__DisplayClass33_0.<CreateXmlSerializationReadCallback>b__0()
   at System.Xml.Serialization.XmlSerializationReader.ReadReferencingElement(String name, String ns, Boolean elementCanBeType, String& fixupReference)
   at System.Xml.Serialization.XmlSerializationReader.ReadReferencedElements()
   at System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateEncodedMembersElement(XmlMembersMapping xmlMembersMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateMembersElement(XmlMembersMapping xmlMembersMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.ReadObject()
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)

All 6 comments

Hi @kevinoid
Thank you for reporting this issue. I looked at the VS feedback ticket you mentioned but didn't find any wsdl attached to it. Can you send me the full wsdl? my email address is in my profile.

thank you!

@kevinoid , thank you for providing the wsdl file. We have confirmed it is a bug in our code and we will be providing a fix in a future release. Stay tuned!

Great, thanks @mlacouture!

Hi @kevinoid
dotnet-svcutil v1.0.3 is now available and it contains a fix for this issue.
thanks

I can confirm that 1.0.3 does not crash without --serializer for AddCustomer.wsdl. The issue appears to be fixed for me.

Thank you very much @mlacouture!

I have the same problem

Object reference not set to an instance of an object.

Exception Stack Trace:

   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass1_0.<CreateGenericTask>b__0(IAsyncResult asyncResult)

inner Exception Stack Trace :


        at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)

inner Exception Stack Trace :

   at System.Xml.Serialization.ReflectionXmlSerializationReaderHelper.<>c__DisplayClass1_2`2.<GetSetMemberValueDelegateWithType>b__2(Object o, Object p)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.<>c__DisplayClass49_2.<WriteEncodedStructMethod>b__2(Object value)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteElement(ElementAccessor element, Boolean checkSpecified, Boolean checkForNull, Boolean readOnly, String defaultNamespace, Int32 fixupIndex, Int32 elementIndex, Fixup fixup, Member member)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElementsIf(Member[] expectedMembers, Member anyElementMember, UnknownNodeAction elementElseAction, Fixup fixup, CheckTypeSource checkTypeSource)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteMemberElements(Member[] expectedMembers, UnknownNodeAction elementElseAction, UnknownNodeAction elseAction, Member anyElement, Member anyText, Fixup fixup, List`1 checkTypeHrefsSource)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.WriteEncodedStructMethod(StructMapping structMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.<>c__DisplayClass33_0.<CreateXmlSerializationReadCallback>b__0()
   at System.Xml.Serialization.XmlSerializationReader.ReadReferencingElement(String name, String ns, Boolean elementCanBeType, String& fixupReference)
   at System.Xml.Serialization.XmlSerializationReader.ReadReferencedElements()
   at System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateEncodedMembersElement(XmlMembersMapping xmlMembersMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.GenerateMembersElement(XmlMembersMapping xmlMembersMapping)
   at System.Xml.Serialization.ReflectionXmlSerializationReader.ReadObject()
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)

Was this page helpful?
0 / 5 - 0 ratings