.net-core - .net core web api 控制器和动作选择
问题描述
我需要根据以下内容生成适当的 404 错误:
- 如果请求的控制器不存在;
- 如果行动不存在;
我正在尝试在 .NET Core Web API 上迁移 web api,并且需要在 .net 框架中的 DefaultHttpControllerSelector 和 ApiControllerActionSelector 的 .net 核心中找到模拟。因为我有模块,它检查控制器和动作的存在。如果未找到控制器或操作,则生成自定义错误。我该如何处理?
解决方案
如果控制器或动作不存在,则默认返回404。
如果您想自定义错误消息,您可以尝试Middleware
检查Response.StatusCode
然后根据您自己的逻辑自定义响应。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.Use(async (context, next) => {
//handle request
await next.Invoke();
//handle response
if (context.Response.StatusCode == StatusCodes.Status404NotFound)
{
//hanlde based on your logic
await context.Response.WriteAsync("Something wrong");
}
});
// Rest app.Use
推荐阅读
- php - Codeigniter 4 部署到 apache2
- sql-server - Ansible win_dsc 无法使用 SqlServerDsc 安装 SqlServer
- java - Rabbitmq 死信交换不起作用导致无限重试
- cordova - 带有 wkwebview 插件的 Cordova ios - window.open(url, "_system") 不起作用
- python-3.x - 如何在python中显示所有caffe层的名称?
- jenkins - 在 Jenkins 管道中的给定阶段超时后继续执行后续阶段
- python - 如果数据范围很大,如何查看数据的分布
- java - 给定 Chronology,Java Time API 从 sql Timestamp 获取偏移量
- ruby-on-rails - 除了仅验证确切的字符串之外,如何验证 Rails 形式的对象的唯一性?
- flutter - Flutter - 动态改变容器颜色