Привет, я новичок в C #, сейчас создаю свой первый веб-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;
}
После запуска этого веб-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>"
}
}
}