c# - 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?
解决方案
在每种方法中将用户重定向到错误页面并不方便。您可以将异常处理程序中间件添加到管道并将其配置为捕获错误、记录错误并显示默认错误页面。阅读本文了解更多详情:
至于您的主要问题-如果正确配置了默认错误处理,则使用 AuthorizeAttribute 就足够了。
推荐阅读
- java - vscode classpath:导入文件夹中的所有jar
- oracle - DBMS_AQADM.PURGE_QUEUE_TABLE 错误 ORA-01001: 无效游标和 ORA-06512: 在 "SYS.DBMS_AQ_INV"
- rxjs - Rxjs shareReplay 失效(超时)
- list - 从列表中随机打印,没有重复
- flutter - 时间线视图、日视图、周视图、月视图和添加事件日历颤振库?
- mysql - SQL 查询:Where 和 like 语句
- python - 参数中的气流 Jinja 模板
- javascript - 匹配不以特殊字符开头的行中的换行符
- spring - 如何使用 Spring Data Elasticsearch ElasticsearchRepository 突出显示
- html - 为什么我的绝对定位元素不显示指定的背景颜色?