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);
现在一切正常!我有输入参数的值
我有一个 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);
现在一切正常!我有输入参数的值