.net core .net核心web api控制器和操作选择

.net core .net核心web api控制器和操作选择,.net-core,asp.net-core-webapi,.net Core,Asp.net Core Webapi,我需要根据以下内容生成适当的404 EROR: 如果请求控制器不存在 如果行动不存在 我正在尝试在.NET Core web api上迁移web api,并且需要在.NET framework中的DefaultHttpControllerSelector和ApiControllerActionSelector的.NET Core中找到模拟。因为我有检查控制器和动作存在的模块。如果未找到控制器或操作,则生成自定义错误。 如何处理此问题?对于不存在的控制器或操作,默认情况下将返回404 如果要自定义

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

  • 如果请求控制器不存在
  • 如果行动不存在 我正在尝试在.NET Core web api上迁移web api,并且需要在.NET framework中的DefaultHttpControllerSelector和ApiControllerActionSelector的.NET Core中找到模拟。因为我有检查控制器和动作存在的模块。如果未找到控制器或操作,则生成自定义错误。
    如何处理此问题?

    对于不存在的控制器或操作,默认情况下将返回404

    如果要自定义错误消息,可以尝试
    中间件
    检查
    响应.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
    

    你能定义“适当”吗?试着更具体地说明你想要实现的目标。@KirkLarkin,这篇文章被编辑了,听起来你需要完全自定义路由。你为什么首先需要这个?如果没有匹配的控制器/操作,您将获得404。这是内置的。我知道如果控制器或操作不存在,我将默认得到404。我也采用了同样的方法,但我认为我可以处理404并使抛出新异常(“控制器不存在”)和抛出新异常(“操作不存在”),您可以尝试实现
    IRouter
    并覆盖
    RouteAsync
    ,以使控制器或操作是否存在有效。尝试