2016-05-04 9 views
5

मैं ओविन अनुरोध से क्वेरी स्ट्रिंग पैरामीटर प्राप्त करने का प्रयास कर रहा हूं। पैरामीटर 'परीक्षण' के लिए ऑपरेशन प्राप्त करें खाली रहता है, हालांकि यह पैरामीटर क्वेरी स्ट्रिंग में था। मैं ओविन होस्ट से अनुरोध पैरामीटर कैसे पढ़ सकता हूं?ओविन क्वेरी स्ट्रिंग पैरामीटर प्राप्त करें

कॉल:

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 पर्यावरण शब्दकोश में लग रहा है। व्यक्ति जीईटी अनुरोध पैरामीटर हालांकि उस शब्दकोश का हिस्सा नहीं हैं। आप 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)।

संबंधित मुद्दे