2016-05-04 21 views
5

Sto cercando di ottenere parametri stringa di query dalla richiesta Owin. L'operazione Get per il parametro 'test' rimane vuota, sebbene questo parametro fosse nella stringa di query. Come posso leggere il parametro di richiesta dall'host OWIN?Owin ottiene parametri stringa di query

chiamata:

localhost:5000/?test=firsttest 

Codice:

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

risposta

5

Get<T> guarda nell'ambiente dizionario OWIN per un qualsiasi tasto. Tuttavia, i singoli parametri di richiesta GET non fanno parte di quel dizionario. È possibile ottenere la stringa di query completa utilizzando req.QueryString che è equivalente a req.Get<string>("owin.RequestQueryString") e restituisce test=firsttest nel tuo caso. Questo potrebbe essere facilmente analizzato.

Un'altra opzione potrebbe essere qualcosa di simile:

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

IOwinRequest implementazioni forniscono una stringa di query analizzata. Si noti che l'oggetto si ottiene da IOwinContext.Request implementa IOwinRequest mentre l'oggetto passato a UseHandlerAsync è di tipo completamente diverso (Owin.Types.OwinRequest) che non fornisce né il contesto né la stringa di query analizzata (afaik).

Problemi correlati