首页 > 解决方案 > Web api 是否应该向客户端应用程序返回状态错误?

问题描述

请看下面的代码:

public async Task<List<Person>> GetAllPeople()
        {
            var uri = API.People.GetAllPeople(_remoteServiceBaseUrl);
            try
            {
                var responseString = await _httpClient.GetStringAsync(uri);
                var response = JsonConvert.DeserializeObject<List<Person>>(responseString);
                return response;
            }
            catch (Exception e)
            {
                //Redirect to error webpage
            }

        }

我在 Web 应用程序和 Web api 中使用 Identity Server 4 进行身份验证和授权设施。

假设 Web API 只需要管理员用户并且调用 Web api 的用户不是管理员,那么 MVC 调用者会捕获 HttpRequestException。这种情况应该如何处理?只需在 MVC 方法 (GetAllPeople) 上放置一个管理员授权属性并忘记它就足够了,还是有更优雅的方法来做到这一点,即删除 try catch?

标签: c#asp.net-coreidentityserver4

解决方案


在每种方法中将用户重定向到错误页面并不方便。您可以将异常处理程序中间件添加到管道并将其配置为捕获错误、记录错误并显示默认错误页面。阅读本文了解更多详情:

至于您的主要问题-如果正确配置了默认错误处理,则使用 AuthorizeAttribute 就足够了。


推荐阅读