2

I have a WSDL I need to use, handed to me from a 3rd party, to communicate with a service. I right-clicked "References" in Visual Studio (2015) and chose "Add Service Reference" and pointed to the WSDL. Service gets added, but when I chose the "View in Object Browser" there are a lot of duplicate classes and enums e.g. NameOfClass/NameOfClass1.

There's also Request/Request1 and Response/Response1.

Request1 looks like this

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class PublishAnsattRequest1 {

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://url/ansatt/service/v1_7", Order=0)]
    public WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest;

    public PublishAnsattRequest1() {
    }

    public PublishAnsattRequest1(WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest) {
        this.PublishAnsattRequest = PublishAnsattRequest;
    }
}

Request looks like this

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1064.2")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://url/ansatt/service/v1_7")]
public partial class PublishAnsattRequest : object, System.ComponentModel.INotifyPropertyChanged {

    private BlueMsgHeaderType blueMsgHeaderField;

    private AnsattObject ansattField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1", Order=0)]
    public BlueMsgHeaderType BlueMsgHeader {
        get {
            return this.blueMsgHeaderField;
        }
        set {
            this.blueMsgHeaderField = value;
            this.RaisePropertyChanged("BlueMsgHeader");
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1_7", Order=1)]
    public AnsattObject Ansatt {
        get {
            return this.ansattField;
        }
        set {
            this.ansattField = value;
            this.RaisePropertyChanged("Ansatt");
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null)) {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}

The second request seems to be the correct one, but the interface wants me to implement Request1.

The interface looks like this

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://url/ansatt/wsdl/v1_7", ConfigurationName="AnsattService.AnsattService")]
public interface AnsattService {

    // CODEGEN: Generating message contract since the operation PublishAnsatt is neither RPC nor document wrapped.
    [System.ServiceModel.OperationContractAttribute(Action="PublishAnsatt", ReplyAction="*")]
    [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode1))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType1))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject1))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(SystemKeyPairType))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(OrganisasjonsenhetObject))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverdiDecimalType))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverkObject))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(AnsettelsesforholdType))]
    [System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject))]
    WcfServiceStatnett.AnsattService.PublishAnsattResponse1 PublishAnsatt(WcfServiceStatnett.AnsattService.PublishAnsattRequest1 request);
}

I have tried a lot of googling on this issue, tried tinkering with configuration options, but nothing seems to work.

Anyone know what causes this issue?

Thuzad
  • 23
  • 3

2 Answers2

0

This link provided the solution for anyone who may run into this issue in the future!

Community
  • 1
  • 1
Thuzad
  • 23
  • 3
0

I meet same issue with Xamarin.Android. This behavior reproduces when parameter GenerateMessageContract is true. Setting it to false solved issue for me.

If you already added you service, you can change this value in ConnectedService.json file, and then update your service.

Sam Sch
  • 642
  • 7
  • 15