2016-05-04 18 views
5

Owin isteğinden sorgu dizesi parametreleri almaya çalışıyorum. 'Parametre' parametresinin çalışmasını al, bu parametre sorgu dizgesindeyken boş kalır. OWIN ana bilgisayarından istek parametresini nasıl okuyabilirim?Owin sorgu dizesi parametrelerini alır

Çağrı:

localhost:5000/?test=firsttest 

Kodu:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseHandlerAsync((req, res) => 
     { 
      string paramTest = req.Get<string>("test");        
      return res.WriteAsync(paramTest); 
     }); 
    } 

cevap

5

Get<T> herhangi bir anahtarının Owin çevre sözlükte arar. Bireysel GET isteği parametreleri, o sözlüğün bir parçası değildir. req.Get<string>("owin.RequestQueryString")'a eşdeğer olan req.QueryString kullanarak eksiksiz sorgu dizesini alabilir ve durumunuza test=firsttest değerini döndürür. Bu kolayca ayrıştırılabilir.

 app.Use(async (ctx, next) => 
     { 
      var param = ctx.Request.Query.Get("test"); 
      await next(); 
     }); 

IOwinRequest uygulamaları çözümlü sorgu dizesi size:

Diğer bir seçenek böyle bir şey olurdu. UseHandlerAsync'a iletilen nesne IOwinContext.Request nesnesinin değerini aldığını, ancak bağlamı veya ayrıştırılmış sorgu dizesini (afaik) sağlayan tamamen farklı bir tür (Owin.Types.OwinRequest) olduğunu unutmayın.