Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dealing with operation name overloading #12

Open
ghost opened this issue Oct 24, 2018 · 0 comments
Open

Dealing with operation name overloading #12

ghost opened this issue Oct 24, 2018 · 0 comments

Comments

@ghost
Copy link

ghost commented Oct 24, 2018

I have a WSDL service that unfortunately is not 100% well behaved. The configuration wizard shows this warning:

Warning> This web reference does not conform to WS-I Basic Profile v1.1.
Warning> R2304: Operation name overloading in a wsdl:portType is disallowed by the Profile. A wsdl:portType in a DESCRIPTION MUST have operations with distinct values for their name attributes. Note that this requirement applies only to the wsdl:operations within a given wsdl:portType. A wsdl:portType may have wsdl:operations with names that are the same as those found in other wsdl:portTypes.
  -  Operation 'startDocSession' on portType 'buildDocSoap' from namespace 'http://www.edocbuilder.com/'.
  -  Operation 'getOrderFile' on portType 'buildDocSoap' from namespace 'http://www.edocbuilder.com/'.
  -  Operation 'getLibraryTemplates' on portType 'buildDocSoap' from namespace 'http://www.edocbuilder.com/'.
> Click "Next" to continue.

After that, the driver does appear to have created the datasource, but attempting to expand it results in an exception. Either this:

5.31.00 2018-10-24T14:10:30.7116814-04:00 Custom Data Context Driver - 
AmbiguousMatchException: Ambiguous match found.
   at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)
   at System.Type.GetMethod(String name)
   at Driver.SchemaBuilder.CreateExplorerOperation(Type serviceType, OperationBinding operation)
   at Driver.SchemaBuilder.BuildEntities(Type serviceType, Binding soapBinding)
   at Driver.SchemaBuilder.Build(ServiceDescription description, String bindingName, Assembly assembly)
   at Driver.SoapContextDriver.GetSchemaAndBuildAssembly(IConnectionInfo connectionInfo, AssemblyName assemblyToBuild, String& nameSpace, String& typeName)
   at LINQPad.SchemaBuilder.GetSchemaAndBuildAssembly(String repositoryData, AssemblyName assemblyToBuild, String& nameSpace, String& typeName, Boolean allowOneToOne, IDictionary`2& sessionData)

if I choose the 1.1 profile, or

NullReferenceException: Object reference not set to an instance of an object.
   at Driver.SchemaBuilder.Build(ServiceDescription description, String bindingName, Assembly assembly)
   at Driver.SoapContextDriver.GetSchemaAndBuildAssembly(IConnectionInfo connectionInfo, AssemblyName assemblyToBuild, String& nameSpace, String& typeName)
   at LINQPad.SchemaBuilder.GetSchemaAndBuildAssembly(String repositoryData, AssemblyName assemblyToBuild, String& nameSpace, String& typeName, Boolean allowOneToOne, IDictionary`2& sessionData)

if I choose the 1.2 profile.

I'm sure that if I fix my web service so that there are no ambiguous methods, this would go away; but short of that, is there anything I can do?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants