替换415不支持的媒体类型状态代码

时间:2018-04-14 23:47:42

标签: c# asp.net-core

我正在将一些代码移动到Web API,我想只接受完美的请求(按顺序发布postdata,按顺序排列所有标头等),并拒绝其他请求。现在我有它,所以如果一个完美的请求进来然后它返回正确的输出200 OK状态代码,如果一个格式错误的请求进来(也就是一个没有正确欺骗的请求),那么它返回404 NOT FOUND。 / p>

我的控制器中的函数都有一个带有FromBody属性的参数,这意味着如果请求使用内容类型“application / json”,它可以正常工作,但是当请求带有另一个内容类型时,它会自动生成返回415不支持的媒体类型状态代码。我想要的是基本上“隐藏”我的所有端点,并且只在请求完美时返回404状态代码以外的东西。所以我想用404状态代码更改返回的415 Unsupported Media Type状态代码。

1 个答案:

答案 0 :(得分:0)

您可以添加自定义中间件来实现:

        app.Use(async (context, next) =>
        {
            await next.Invoke();

            if (context.Response.StatusCode == StatusCodes.Status415UnsupportedMediaType)
            {
                context.Response.StatusCode = StatusCodes.Status404NotFound;
                await context.Response.WriteAsync("404 not found");
            }
        });

确保在中间件管道中的适当位置配置它。