WCF POST C#获取所有输入参数NULL

WCF POST C# get all the input parameters NULL

我有一个 WCF REST POST 具有多个输入参数的 GetConsoTable :

 [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)]
    List<WsConso> GetConsoTable(ConsoDataPhaseParams listPhases , ConsoDataPerimetreParams 
   listPerimetres , ConsoDataVarianteParams listVariantsame, ConsoDataCurrencieParams listCurrencies);

并且参数相同:都是字符串列表,例如Paramaeter:ConsoDataPhaseParams

 [DataContract]
 public class ConsoDataPhaseParams 
 {
    [DataMember]
    public List<string> ListPhases { get; set; }

 }

这里是服务 wcf 的实现:

public List<WsConso> GetConsoTable(ConsoDataPhaseParams consoDataPhaseParams, ConsoDataPerimetreParams consoDataPerimetreParams, ConsoDataVarianteParams consoDataVarianteParams, ConsoDataCurrencieParams consoDataCurrencieParams)
    {
        CommonParams commonParams = null;     
        var lstConsosData = consoServices.GetConsoTableMapped(consoDataPhaseParams, consoDataPerimetreParams, consoDataVarianteParams, consoDataCurrencieParams);

       // ...
    }

当我使用 Postman 调用此服务并输入所有输入时出现的问题:

{   
"ListPhases" : [ "B", "C", "D"] ,
"ListPerimetres": ["GLOBE"],
"ListVariants" : ["1", "2", "3", "66" ],
"ListCurrencies" : ["EUR", "UD" ]
}

当我调试我的服务时,我得到的所有参数都是空的!! 我不知道具体是什么问题?

但是我有其他 wcf REST POST :

  public List<WsConso> GetConsosByName(ConsoNameParams consoNameParams)
    {
       //...
    }

ConsoNameParams class:

[DataContract]
public class ConsoNameParams 
{
    [DataMember]
    public List<string> ListNames { get; set; }
}

并在 POSTMAN 中调用它:

{   
   "ListUserName": ["ADMINCONSOLE","WEBSERVICE"]
 }

它工作正常!! 然后就是我猜的多输入参数的问题。

我可以修复它吗?谢谢,

我找到了解决办法。 首先,我只创建一个 class 和所有列表 if strings in this class:

[DataContract]
public class ConsoDataPhaseParams : CommonParams
{
    [DataMember]
    public List<string> ListPhases { get; set; }
    [DataMember]
    public List<string> ListPerimetres { get; set; }
    [DataMember]
    public List<string> ListVariants { get; set; }
    [DataMember]
    public List<string> ListCurrencies { get; set; }

}

然后我将 BodyStyle 更改为 Bare:

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]      
    List<WsConso> GetConsoTable(ConsoDataPhaseParams consoDataPhaseParams);

现在一切正常!我有输入参数的值