【问题标题】:Owin IAppBuilder.Map unexpectedly handling all requestsOwin IAppBuilder.Map 意外处理所有请求
【发布时间】:2014-10-29 23:41:15
【问题描述】:
string path = "/SomeSubPath";
            app.Map(new PathString(path),
                (application) =>
                {
                    app.Run((ctx) =>
                    {
                        Debug.WriteLine("{0} : {1}", path, ctx.Request.Path);

                        return Task.FromResult(0);
                    });
                });

            app.Use(async (ctx, next) =>
            {
                var watch = new Stopwatch();

                watch.Start();
                await next();
                watch.Stop();
                Debug.WriteLine("Request handled in {0} [ms]", watch.ElapsedMilliseconds);
            });

            app.Use(async (ctx, next) =>
            {
                Debug.WriteLine("{0} : {1}", "/", ctx.Request.Path);
                await next();
            });

考虑上述管道配置。

在我的启动类中,我想将“SomeSubPath”映射到一个专有的中间件处理程序。 IE。以“/SomeSubPath”开头的请求应该由一些专有中间件处理,而所有其他请求应该由管道的其余部分处理。我正在使用here 中的 IAppBuilder.Map 扩展。令我惊讶的是,中间件正在拦截所有请求,阻止应用程序的其余部分处理这些请求。

  • 为什么会这样?
  • 我怎样才能做到这一点?

【问题讨论】:

  • 有人吗?我正在为此苦苦挣扎:/

标签: c# asp.net owin katana


【解决方案1】:

像这样改变这个块。在Map 内部,您使用的是app 而不是application

       app.Map(new PathString(path),
        (application) =>
        {
            application.Run((ctx) =>
            {
                Debug.WriteLine("{0} : {1}", path, ctx.Request.Path);

                return Task.FromResult(0);
            });
        });

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 2011-03-01
    • 1970-01-01
    • 2016-06-12
    • 2014-04-28
    • 2017-10-15
    • 2017-12-29
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多