【问题标题】:Why isnt my middleware working?为什么我的中间件不工作?
【发布时间】:2017-11-02 11:34:53
【问题描述】:

我尝试添加自己的中间件,但它不起作用:-)

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        System.Diagnostics.Debug.WriteLine("OWIN IS WORKING");

        app.Use<CustomMiddleware>();
    }
}

public class CustomMiddleware
{
    public async Task Invoke(HttpContext context)
    {
        string token = context.Request.Headers["Authorization"];
    }
}

WriteLine 是这样的,因此它会根据对服务器的请求进入配置,但我的 CustomMiddleware Invoke 未触发。

有什么线索吗?

【问题讨论】:

  • 你真的应该在CustomMiddleware 类中有一个构造函数,它接收下一个中间件项并按顺序调用它。否则,您的管道将在此处停止。
  • @DavidG 好点。而我怎么……?我只是想创建一个中间件来检查是否设置了标头 Content-Type。如果不返回 400
  • 这是针对 ASP.Net Core 的吗?
  • Plain ol' asp.net mvc

标签: asp.net asp.net-mvc owin-middleware


【解决方案1】:

你需要构造函数有下一个delegate

所以你的代码应该像下面这样改变:

public class CustomMiddleware 
{
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        string token = context.Request.Headers["Authorization"];
        await _next();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 2017-09-20
    • 2012-04-14
    • 2016-09-15
    • 2012-02-14
    • 2012-08-10
    • 2013-07-27
    • 1970-01-01
    相关资源
    最近更新 更多