Web Api 返回空响应
Web Api returning empty response
我正在尝试 return 低于我的 api 方法的模型,但它是 return 空响应。
[DataContract]
public class MasterData
{
public IEnumerable<PROFILE> lstProfile { get; set; }
public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }
public IEnumerable<TB> lstTB { get; set; }
public MasterData() { }
}
回复:
<MasterData xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WB.Q.Models"/>
当我调试 Web api 方法时,我可以在 return 语句中看到正确形成的响应,但我没有将其作为响应
动作
[HttpGet]
[Route("api/Common/AllMasterData")]
public MasterData GetAllMasterData()
{
MasterData mstrData=new MasterData();
mstrData = Helper.GetAllMasterData();
return mstrData;
}
辅助方法
internal static MasterData GetAllMasterData()
{
MasterData masterData = new MasterData();
DataSet ds = DBHelper.GetData("aaa", null);
List<COMPETENCE> lstCompetence = new List<COMPETENCE>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstCOMPETENCE = lstCompetence;
ds = DBHelper.GetData("bbb", null);
List<PROFILE> lstPROFILE = new List<PROFILE>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstProfile = lstPROFILE;
ds = DBHelper.GetData("zzz", null);
List<TBSite> lstTBSite = new List<TBSite>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstTBSite = lstTBSite;
return masterData;
}
如果我从 Modal 中删除 DataContract,则会出现以下错误:
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
如果我们将对象集合作为 属性,是否必须使用 DataContract 和 DataMember?
如果您像那样使用 DataContract
那么我相信您还需要在响应中用 DataMember
标记您想要的所有内容:
[DataContract]
public class MasterData
{
[DataMember]
public IEnumerable<PROFILE> lstProfile { get; set; }
[DataMember]
public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }
[DataMember]
public IEnumerable<TB> lstTB { get; set; }
public MasterData() { }
}
我自己也犯过这样的错误......大约六次:)
或者,您可以省略 DataContract
属性,一切都应该仍然可以很好地序列化。
我正在尝试 return 低于我的 api 方法的模型,但它是 return 空响应。
[DataContract]
public class MasterData
{
public IEnumerable<PROFILE> lstProfile { get; set; }
public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }
public IEnumerable<TB> lstTB { get; set; }
public MasterData() { }
}
回复:
<MasterData xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WB.Q.Models"/>
当我调试 Web api 方法时,我可以在 return 语句中看到正确形成的响应,但我没有将其作为响应
动作
[HttpGet]
[Route("api/Common/AllMasterData")]
public MasterData GetAllMasterData()
{
MasterData mstrData=new MasterData();
mstrData = Helper.GetAllMasterData();
return mstrData;
}
辅助方法
internal static MasterData GetAllMasterData()
{
MasterData masterData = new MasterData();
DataSet ds = DBHelper.GetData("aaa", null);
List<COMPETENCE> lstCompetence = new List<COMPETENCE>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstCOMPETENCE = lstCompetence;
ds = DBHelper.GetData("bbb", null);
List<PROFILE> lstPROFILE = new List<PROFILE>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstProfile = lstPROFILE;
ds = DBHelper.GetData("zzz", null);
List<TBSite> lstTBSite = new List<TBSite>();
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow drow in ds.Tables[0].Rows)
{
Adding in list
}
}
masterData.lstTBSite = lstTBSite;
return masterData;
}
如果我从 Modal 中删除 DataContract,则会出现以下错误:
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
如果我们将对象集合作为 属性,是否必须使用 DataContract 和 DataMember?
如果您像那样使用 DataContract
那么我相信您还需要在响应中用 DataMember
标记您想要的所有内容:
[DataContract]
public class MasterData
{
[DataMember]
public IEnumerable<PROFILE> lstProfile { get; set; }
[DataMember]
public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }
[DataMember]
public IEnumerable<TB> lstTB { get; set; }
public MasterData() { }
}
我自己也犯过这样的错误......大约六次:)
或者,您可以省略 DataContract
属性,一切都应该仍然可以很好地序列化。