我有当前的 API (web api 2) 项目,该项目有许多正在使用的消息处理程序,一些为每个请求运行(检查以确保请求是 https 并且请求来自授权客户端),还有一些在特定的路由(检查是否存在安全令牌)。
现在我的问题是如何在 MVC 6 中复制此功能,我目前的理解是它应该通过使用中间件来完成,但我还没有找到一个示例可以让我检查传入请求的标头以及他们应该不是他们应该返回适当的 http 响应代码。
我有当前的 API (web api 2) 项目,该项目有许多正在使用的消息处理程序,一些为每个请求运行(检查以确保请求是 https 并且请求来自授权客户端),还有一些在特定的路由(检查是否存在安全令牌)。
现在我的问题是如何在 MVC 6 中复制此功能,我目前的理解是它应该通过使用中间件来完成,但我还没有找到一个示例可以让我检查传入请求的标头以及他们应该不是他们应该返回适当的 http 响应代码。
中间件绝对是解决您要解决的问题的正确选择。我在这里写了一个关于使用/编写中间件的体面解释: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();
}
});
}
}