在MVC 6中实现消息处理程序

时间:2015-06-25 21:29:12

标签: middleware asp.net-core-mvc message-handlers

我有当前的API(web api 2)项目,其中包含许多正在使用的消息处理程序,一些针对每个请求运行(检查以确保请求是https并且请求来自授权客户端)以及一些在特定路由上运行(检查是否存在安全令牌)。

现在我的问题是如何在MVC 6中复制此功能,我目前的理解是应该通过使用中间件来完成,但我还没有找到一个允许我检查标头的示例传入的请求,如果它们不应该是它们应该返回适​​当的http响应代码。

1 个答案:

答案 0 :(得分:2)

中间件绝对是解决您想要解决的问题的正确选择。我在这里写了一篇关于使用/编写middlware的合理解释:ASP.NET MVC 6 handling errors based on HTTP status code

要具体回答如何检查标题,这是一个例子:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            if (!string.Equals(context.Request.Headers["myheader"], "somevalue", StringComparison.Ordinal))
            {
                context.Response.StatusCode = 400;
                await context.Response.WriteAsync("Invalid headers");
            }
            else
            {
                await next();
            }
        });
    }
}