【发布时间】:2018-09-08 13:57:25
【问题描述】:
您好,我是 C# 新手,目前我正在构建我的第一个 Web API。要求是以 JSON 格式显示发生的任何错误作为响应
这是我的 ResponseData 类
public class ResponseData
{
public List<AccountDTO> AccountList { set; get; }
public string ReturnMessage { set; get; }
public string error { get; set; }
public string code { get; set; }
public string message { get; set; }
public string innererror { get; set; }
public string type { get; set; }
public string stacktrace { get; set; }
}
这是我的控制器
例如,如果我的代码执行catch 块,我将收集异常的所有信息并以格式化的JSON 返回。
[HttpGet]
public ResponseData getAllAccounts(string BRN, string CompanyName)
{
ResponseData response = new ResponseData();
List<AccountDTO> accountlist = null;
IAccountInterface usecase = new AccountDAO();
try
{
if (BRN != null && CompanyName != null)
{
accountlist = usecase.getAccountbyBRNCompanyName().Where(p => p.BRN.ToLower().Equals(BRN.ToLower()) && p.CompanyName.ToLower().Contains(CompanyName.ToLower())).ToList();
response.ReturnMessage = "Data filter by BRN and CompanyName.";
}
else
{
response.ReturnMessage = "Data filter cannot be null.";
}
response.AccountList = accountlist;
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message + ", Stack: " + e.StackTrace);
response.code = "sample code";
response.message = e.Message;
response.innererror = "{";
response.message = e.Message;
response.type = "ExceptionType + ...";
response.stacktrace = e.StackTrace;
//response.ReturnMessage = JsonConvert.SerializeObject(errorFormat);
}
return response;
}
运行此 Web APi 后,如果执行了 catch 块,则响应如下图所示。
到目前为止,它几乎与我想要的相似。但是,无论错误与否,我的 WEB API 响应都会采用这种格式。我知道这是因为我返回了一个response object,所以我的所有对象属性都会显示出来。
这是我想要实现的示例响应。有关错误的详细信息以 JSON 形式包含在响应中。错误将采用这种格式。非常感谢任何帮助和指导。
{
"error":{
"code": "<This code is not related to..>",
"message": "<A message describing the error..>",
"innererror": {
"message": "<A message describing the error..>",
"type": "Microsoft.Crm.CrmHttpException",
"stacktrace": "<Details from the server about where the
error occurred>"
}
}
}
【问题讨论】:
-
所需的 JSON 错误响应模型与使用的类不匹配。
-
@Nkosi 请详细说明。
标签: c# json asp.net-web-api