C#Web API,如何处理异常并返回适当的状态代码

安德鲁

我正在创建可能会引发异常的.net核心Web API,在这种情况下,它无法通过ID查找人。如果找不到该人,则抛出自定义异常,例如NotFoundException。

是否有一个公共/全局位置,我可以拦截此异常,然后返回404状态代码。而不是在每个控制器中编写自定义代码来处理所有不同的可能异常。我在想也许只是ExceptionHelper类,但想知道是否有更好的方法。理想情况下,我想在一个地方处理所有异常并根据异常返回不同的状态代码?

凯文

你可以用你的Configure方法来解决这个问题Startup.cs类似于以下内容:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseExceptionHandler(appBuilder =>
    {
        appBuilder.Run(async context =>
        {
            var exceptionHandlerFeature = context.Features.Get<IExceptionHandlerFeature>();
            if (exceptionHandlerFeature != null)
            {
                var exception = exceptionHandlerFeature.Error;
                if(exception == YourNotFoundException)
                {
                    context.Response.StatusCode = 404;
                    await context.Response.WriteAsync("Could not find resource");
                }
                //you can also have global logging here eg:
                //var logger = loggerFactory.CreateLogger("Global exception logger");
                //logger.LogError(500, exception, exception.Message);
            }
            else
            {
                context.Response.StatusCode = 500;
                await context.Response.WriteAsync("an unexpected fault happened. Try again later.");
            }

        });
    });
    ...
}

然后在控制器中引发异常

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#Web Api路由

来自分类Dev

Web服务的C#Web API路由

来自分类Dev

C#Web API帮助文档IHttpActionResult

来自分类Dev

C#Web API中的文档

来自分类Dev

C#Web API项目共享策略

来自分类Dev

C#Web API返回列表对象的列表

来自分类Dev

C#Web API返回列表对象的列表

来自分类Dev

从C#Web服务返回的字符串中的日期

来自分类Dev

C#Web API路由与Angular路由混合

来自分类Dev

C#Web API服务数据未持久

来自分类Dev

C#Web API POST参数FromBody始终为null

来自分类Dev

C#Web Api(非MVC)字典参数

来自分类Dev

C#Web API INNER JOIN和RETURN查询值

来自分类Dev

从C#Web API读取数据而不是响应

来自分类Dev

C#Web API服务数据未持久

来自分类Dev

在vb.net网站上设置C#Web API

来自分类Dev

C#Web Api中的动态注册控制器

来自分类Dev

C#Web Api(非MVC)字典参数

来自分类Dev

如何在Salesforce中调用C#Web服务

来自分类Dev

如何在C#Web中将Json解析为开源

来自分类Dev

如何在C#WEB API中返回JSON Web令牌?

来自分类Dev

C#Web服务:调用异步方法的Web方法返回Taskoff对象

来自分类Dev

C#Web服务:调用异步方法的Web方法返回Taskoff对象

来自分类Dev

新的Relic,Azure Web,c#Web API-无数据

来自分类Dev

JSON POST正文中字符串ID或对象属性的C#Web API处理

来自分类Dev

从C#Web API方法下载ZipArchive在Chrome中返回“ net :: ERR_CONNECTION_RESET”

来自分类Dev

浏览器如何显示从C#Web服务返回的JSON

来自分类Dev

如何从C#Web API的angular 7中填充材料下拉列表?

来自分类Dev

在C#Web API中-如何从Python HTTPBasicAuth获取用户和传递