首页 > 解决方案 > .net core web api 控制器和动作选择

问题描述

我需要根据以下内容生成适当的 404 错误:

  1. 如果请求的控制器不存在;
  2. 如果行动不存在;

我正在尝试在 .NET Core Web API 上迁移 web api,并且需要在 .net 框架中的 DefaultHttpControllerSelector 和 ApiControllerActionSelector 的 .net 核心中找到模拟。因为我有模块,它检查控制器和动作的存在。如果未找到控制器或操作,则生成自定义错误。我该如何处理?

标签: .net-coreasp.net-core-webapi

解决方案


如果控制器或动作不存在,则默认返回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

推荐阅读