2016-05-04 139 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.QueryString(相當於req.Get<string>("owin.RequestQueryString"))獲得完整的查詢字符串,並在您的情況下返回test=firsttest。這可以很容易解析。

另一種辦法是這樣的:

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

IOwinRequest實現爲您提供瞭解析查詢字符串。請注意,從IOwinContext.Request獲得的對象實現了IOwinRequest,而傳遞到UseHandlerAsync的對象是完全不同的類型(Owin.Types.OwinRequest),它們既不提供上下文也不提供分析的查詢字符串(afaik)。

相關問題