2011-07-04 14 views
5

मेरी वेबसाइट पर कुछ हद तक पृष्ठों को SSL का उपयोग करने की आवश्यकता है, इसलिए मैंने प्रासंगिक नियंत्रकों को [RequireHttps] जोड़ा है। हालांकि, मैं अभी भी अपने अधिकांश पृष्ठों को हमेशा गैर-एसएसएल का उपयोग करना चाहता हूं, इसलिए कस्टम [DoNotUseHttps] फ़िल्टर बनाने के लिए मैंने सफलतापूर्वक code I found on SO का उपयोग किया।वैश्विक कार्रवाई फ़िल्टर को ओवरराइड करना

चीजों को आसान बनाने के लिए मैं डिफ़ॉल्ट रूप से इस गैर-एसएसएल फ़िल्टर को शामिल करना चाहता हूं, इसलिए मैंने इसे ग्लोबल.एएसएक्स फ़ाइल में सेट किए गए वैश्विक फ़िल्टर में जोड़ा। हालांकि, ऐसा लगता है कि अब मैंने प्रत्येक फिल्टर को दूसरे पर रीडायरेक्ट करने के साथ एक अनंत लूप बनाया है।

जो मुझे मेरे प्रश्न पर ले जाता है ... क्या मैं अपने वैश्विक फ़िल्टर में कुछ भी जोड़ सकता हूं यह पता लगाने के लिए कि [RequireHttps] पहले से ही नियंत्रक पर लागू किया गया है या नहीं?

उत्तर

5

निश्चित रूप से, आप कार्यों और नियंत्रकों के बारे में कुछ भी पूछताछ कर सकते हैं। RequireHttpsAttribute:

public override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    base.OnActionExecuted(filterContext); 

    bool requireHttps = filterContext.ActionDescriptor.ControllerDescriptor 
     .GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0 
} 
की जांच के लिए
संबंधित मुद्दे