2016-05-04 11 views
5

Owin要求からクエリ文字列パラメータを取得しようとしています。パラメータ 'test'は空のままですが、このパラメータはクエリ文字列内にあります。 OWINホストからリクエストパラメータを読み込む方法は?Owinがクエリ文字列パラメータを取得

コール:

localhost:5000/?test=firsttest 

コード:

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

答えて

5

Get<T>任意のキーのためのOWIN環境ディクショナリに見えます。しかし、個々のGETリクエストパラメータはその辞書の一部ではありません。あなたはreq.Get<string>("owin.RequestQueryString")に相当するreq.QueryStringを使用して完全なクエリ文字列を得ることができ、あなたのケースではtest=firsttestを返します。それは簡単に解析することができます。

別のオプションは、このようなものになるだろう:

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

IOwinRequest実装が解析されたクエリ文字列を提供します。オブジェクトUseHandlerAsyncに渡されるオブジェクトは、文脈も解析されたクエリ文字列(afaik)も提供しない完全に異なる型(Owin.Types.OwinRequest)であるのに対して、IOwinContext.Requestから得られるオブジェクトはIOwinRequestを実装することに注意してください。

関連する問題