C# SOAP请求中缺少参数

C# SOAP请求中缺少参数,c#,.net,web-services,wcf,soap,C#,.net,Web Services,Wcf,Soap,我的服务请求一直存在问题,我发现我的“using”语句一直在隐藏异常。我现在已经解决了这个问题,但我还有一个问题。我在C#中的参数赋值没有进入SOAP请求 这是我的简历: 以下是生成的请求: <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <s:headerProperties> <brokerCode>1&l

我的服务请求一直存在问题,我发现我的“using”语句一直在隐藏异常。我现在已经解决了这个问题,但我还有一个问题。我在C#中的参数赋值没有进入SOAP请求

这是我的简历:

以下是生成的请求:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Header>
      <s:headerProperties>
         <brokerCode>1</brokerCode>
         <departmentId>503</departmentId>
         <language>en</language>
         <country>GB</country>
      </s:headerProperties>
   </s:Header>
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <getRateOfExchange xmlns="http://keepingitreal.co.uk"/>
   </s:Body>
</s:Envelope>

1.
503
EN
国标
如您所见,getRateOfExchange元素中缺少CharterInquireId参数/属性,导致服务返回错误

为了完整起见,下面是由服务引用生成的相关类的片段

// method
public ACS.CBS.BusinessDelegates.CharterServices.rateOfExchange[] getRateOfExchange(ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchange getRateOfExchange1) {
    ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeRequest inValue = new ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeRequest();
    inValue.getRateOfExchange = getRateOfExchange1;
    ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeResponse retVal = ((ACS.CBS.BusinessDelegates.CharterServices.charterService)(this)).getRateOfExchange(inValue);
    return retVal.getRateOfExchangeResponse1;
 }

// ...

// class
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34234")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://keepingitreal.co.uk")]
public partial class getRateOfExchange : object, System.ComponentModel.INotifyPropertyChanged {

private long charterEnquiryIdField;

private bool charterEnquiryIdFieldSpecified;

[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
        public long charterEnquiryId {
            get {
                return this.charterEnquiryIdField;
            }
            set {
                this.charterEnquiryIdField = value;
                this.RaisePropertyChanged("charterEnquiryId");
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool charterEnquiryIdSpecified {
            get {
                return this.charterEnquiryIdFieldSpecified;
            }
            set {
                this.charterEnquiryIdFieldSpecified = value;
                this.RaisePropertyChanged("charterEnquiryIdSpecified");
            }
        }

        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));
            }
        }
    }
//方法
public ACS.CBS.BusinessDelegates.CharterServices.rateOfExchange[]getRateOfExchange(ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchange getRateOfExchange 1){
ACS.CBS.BusinessDelegates.CharterServices.GetRateOfExchangeRequestInvalue=新建ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeRequest();
inValue.getRateOfExchange=getRateOfExchange 1;
ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchange响应retVal=((ACS.CBS.BusinessDelegates.CharterServices.charterService)(此)).getRateOfExchange(无效);
返回retVal.getRateOfExchangeResponse1;
}
// ...
//阶级
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.0.30319.34234”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(命名空间=”http://keepingitreal.co.uk")]
公共部分类getRateOfExchange:对象,System.ComponentModel.INotifyPropertyChanged{
私人长租油田;
指定的私人bool租船合同;
[System.Xml.Serialization.xmlementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified,Order=0)]
公共长期租约{
得到{
返回此.yidfield;
}
设置{
this.yidfield=值;
本.RaisePropertyChanged(“CharterInquiryId”);
}
}
/// 
[System.Xml.Serialization.XmlIgnoreAttribute()]
指定的公共布尔值{
得到{
返回指定的此.CharterInquiredField;
}
设置{
this.yidFieldSpecified=值;
本.RaisePropertyChanged(“特许查询指定”);
}
}
公共事件System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
受保护的void RaisePropertyChanged(字符串propertyName){
System.ComponentModel.PropertyChangedEventHandler propertyChanged=this.propertyChanged;
如果((propertyChanged!=null)){
propertyChanged(这是新的System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}

我做错了什么?我两天来一直在试图修复这个bug

我认为您需要将
CharterInquiryIDSpecified
设置为“告诉”XML序列化程序使用该值。

与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。请参阅“.好的,gotchya。我以后会避免使用它们。WCF类型的客户端是有关使用语句的
规则的例外。这是WCF设计中的一个缺陷。请参阅“”
// method
public ACS.CBS.BusinessDelegates.CharterServices.rateOfExchange[] getRateOfExchange(ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchange getRateOfExchange1) {
    ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeRequest inValue = new ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeRequest();
    inValue.getRateOfExchange = getRateOfExchange1;
    ACS.CBS.BusinessDelegates.CharterServices.getRateOfExchangeResponse retVal = ((ACS.CBS.BusinessDelegates.CharterServices.charterService)(this)).getRateOfExchange(inValue);
    return retVal.getRateOfExchangeResponse1;
 }

// ...

// class
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34234")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://keepingitreal.co.uk")]
public partial class getRateOfExchange : object, System.ComponentModel.INotifyPropertyChanged {

private long charterEnquiryIdField;

private bool charterEnquiryIdFieldSpecified;

[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
        public long charterEnquiryId {
            get {
                return this.charterEnquiryIdField;
            }
            set {
                this.charterEnquiryIdField = value;
                this.RaisePropertyChanged("charterEnquiryId");
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool charterEnquiryIdSpecified {
            get {
                return this.charterEnquiryIdFieldSpecified;
            }
            set {
                this.charterEnquiryIdFieldSpecified = value;
                this.RaisePropertyChanged("charterEnquiryIdSpecified");
            }
        }

        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));
            }
        }
    }