.net核心Web API控制器和操作选择

时间:2018-08-21 14:34:38

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

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

  1. 如果请求的控制器不存在;
  2. 如果不存在操作;

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

1 个答案:

答案 0 :(得分:1)

对于不存在的控制器或动作,默认情况下它将返回 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