2014-10-28 70 views
0
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(); 
      }); 

考慮上述管道配置。Owin IAppBuilder.Map意外處理所有請求

在我的啓動類中,我想將「SomeSubPath」映射到獨佔的中間件處理程序。 IE瀏覽器。以「/ SomeSubPath」開頭的請求應該由一些專有的中間件來處理,而所有其他請求應該由管道的其餘部分處理。我使用的IAppBuilder.Map擴展名爲here。令我吃驚的是,中間件截獲了所有請求,壓制了其他應用程序處理這些請求。

  • 這是怎麼發生的?
  • 我該如何解決這個問題?
+0

有人嗎?我正在努力:/ – Maciek 2014-10-28 17:30:52

回答

8

像這樣改變這個塊。在Map內部,您使用的是app而不是application

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

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