如何捕获Web API 2中的所有异常?

 奥桑黑黑更健康 发布于 2022-12-27 10:03

我在Web API中编写RESTful API,我不确定如何有效地处理错误.我希望API返回JSON,它需要每次都包含完全相同的格式 - 即使出现错误.以下是一些成功和失败的响应可能是什么样子的例子.

成功:

{
    Status: 0,
    Message: "Success",
    Data: {...}
}

错误:

{
    Status: 1,
    Message: "An error occurred!",
    Data: null
}

如果有异常 - 任何异常,我想返回一个像第二个那样形成的响应.什么是万无一失的方法,以便没有任何例外处理未处理?

1 个回答
  • 实施IExceptionHandler.

    就像是:

     public class APIErrorHandler : IExceptionHandler
     {
         public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
         {
             var customObject = new CustomObject
                 {
                     Message = new { Message = context.Exception.Message }, 
                     Status = ... // whatever,
                     Data = ... // whatever
                 };
    
            //Necessary to return Json
            var jsonType = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;    
    
            var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError, customObject, jsonType);
    
            context.Result = new ResponseMessageResult(response);
    
            return Task.FromResult(0);
        }
    }
    

    并在WebAPI(public static void Register(HttpConfiguration config))的配置部分写:

    config.Services.Replace(typeof(IExceptionHandler), new APIErrorHandler());
    

    2022-12-27 10:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有