2016-05-04 13 views
5

Ich versuche Abfrage Zeichenfolge Parameter von Owin Anfrage. Die Operation für den Parameter 'test' bleibt leer, obwohl sich dieser Parameter in der Abfragezeichenfolge befand. Wie kann ich Anfrage Parameter von OWIN Host lesen?Owin Abfrage String-Parameter

Call:

localhost:5000/?test=firsttest 

Code:

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

Antwort

5

Get<T> sieht in der OWIN Umgebung Wörterbuch für jede Taste. Die einzelnen GET-Anfrageparameter sind jedoch nicht Teil dieses Wörterbuchs. Sie könnten die vollständige Abfragezeichenfolge mit req.QueryString abrufen, was req.Get<string>("owin.RequestQueryString") entspricht und in Ihrem Fall test=firsttest zurückgibt. Das könnte leicht geparst werden.

Eine andere Möglichkeit wäre so etwas wie dieses:

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

IOwinRequest Implementierungen bieten Ihnen eine geparste Abfrage-String. Beachten Sie, dass das von IOwinContext.Request empfangene Objekt IOwinRequest implementiert, während das Objekt, das an UseHandlerAsync übergeben wird, von einem vollständig anderen Typ ist (Owin.Types.OwinRequest), der weder den Kontext noch die analysierte Abfragezeichenfolge (afaik) bereitstellt.