2012-07-16 14 views
15

मैं asp.net MVC3 में एक आवेदन के विकास कर रहा हूँ और मैं निम्नलिखित प्रश्न हैं में कार्रवाई फिल्टर: जब मैं एक HTTP मॉड्यूल लिखना चाहिए और जब मैं एक कार्रवाई फिल्टर लिखना चाहिए?HTTP मॉड्यूल बनाम asp.net-MVC

उत्तर

22
  1. फ़िल्टर करने की अधिक एमवीसी दृष्टिकोण है जबकि एचटीपी मॉड्यूल चीज करने के एएसपी.NET तरीके से अधिक है। दोनों प्रसंस्करण पाइपलाइन में हुक प्रदान करके समान उद्देश्य प्रदान करते हैं।

  2. HttpModule अधिक सामान्य है और जब आप चाहते हैं कुछ बात हर अनुरोध पर संसाधित करने के लिए। कार्रवाई विशिष्ट व्यवहार जोड़ने के लिए फ़िल्टर उपयोगी हैं।

  3. यदि आप चाहते हैं कुछ बात HTTP अनुरोध प्रति केवल एक बार निष्पादित करने के लिए, आप एक HttpModule का उपयोग करना चाहिए। जब तक आप IsChildActionOn की जांच नहीं करते हैं तब तक एक्शनफ़िल्टर को अनुरोध के दौरान कई बार निष्पादित किया जा सकता है।

1

HttpModule कैसे आईआईएस डिफ़ॉल्ट व्यवहार को ओवरराइड या सूचना देने के लिए HttpApplication घटनाओं के लिए ईवेंट हैंडलर्स देते द्वारा कस्टम तर्क जोड़ने के लिए एक वेब अनुप्रयोग की अनुमति देता है। विभिन्न आईआईएस मोड (एकीकृत या क्लासिक) का उपयोग भी अलग-अलग Web.config सेटिंग्स है।
संदर्भ:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx

उदाहरण: www यूआरएल

public void Init(HttpApplication application) 
{ 
    application.PreRequestHandlerExecute += this.Application_PreRequestHandlerExecute; 
} 

private void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    Uri requestUrl = HttpContext.Current.Request.Url; 
    string host = requestUrl.Authority.ToLower(); 
    if (!host.StartsWith("www")) 
    { 
     HttpContext.Current.Response.Redirect(requestUrl.Scheme + "://www." + host + requestUrl.PathAndQuery); 
     HttpContext.Current.Response.End(); 
    } 
} 

एक कार्रवाई फ़िल्टर को अनुप्रेषित गैर- www एक विशेषता सजाने नियंत्रकों या कार्रवाई के तरीकों है। यह एमवीसी रूटिंग और एक्शन विधियों के बीच एक अमूर्त परत है। एक्शन फ़िल्टर के साथ, हम एकाधिक नियंत्रकों या क्रिया विधियों में समान तर्क लागू कर सकते हैं। उदाहरण के लिए, कस्टम लॉगिंग।

2

HttpModule अनुरोध हैंडलर निष्पादित करने से पहले और बाद में बुलाए जाते हैं। वे एक डेवलपर को प्रत्येक अनुरोध को रोकने, भाग लेने या संशोधित करने के लिए सक्षम हैं। 22 उपलब्ध घटनाएं हैं जिनकी सदस्यता ली जा सकती है जो मॉड्यूल को प्रक्रिया के विभिन्न चरणों में अनुरोध पर काम करने में सक्षम बनाता है। ईवेंट पेज डेवलपर्स के लिए उपयोगी हैं जो कुंजी अनुरोध पाइपलाइन घटनाओं को उठाए जाने पर कोड चलाने के लिए चाहते हैं। यदि आप एक कस्टम मॉड्यूल विकसित कर रहे हैं और आप पाइपलाइन के सभी अनुरोधों के लिए मॉड्यूल को शामिल करना चाहते हैं तो वे भी उपयोगी हैं।

फ़िल्टर एमवीसी अनुरोध जीवन चक्र के बीच तर्क को इंजेक्ट करने के लिए डिज़ाइन किए गए हैं। विशेष रूप से कार्रवाई के पहले और बाद में लागू किया जाता है, साथ ही परिणाम के पहले और बाद में संसाधित किया जाता है। फ़िल्टर उपयोगकर्ताओं को एमवीसी परियोजनाओं के भीतर कई चीजों का निरीक्षण, विश्लेषण, कैप्चर और उपकरणों के शक्तिशाली तरीके प्रदान करते हैं।

  • प्रमाणीकरण
  • प्राधिकरण
  • कार्रवाई
  • परिणाम
  • अपवाद

तो अगर आप, अवरोधन भाग लेते हैं, या करना चाहते हैं: MVC5 के रूप में, फिल्टर के 5 प्रकार के होते हैं 22 events in the http request pipeline के विशिष्ट में संशोधित करें मॉड्यूल चुनें।

  • OnActionExecuting
  • OnActionExecutted
  • OnResultExecuting
  • OnResultExecuted
: अपने तर्क सख्ती से कार्रवाई विधि आप अधिभावी बेहतर सर्वर निम्नलिखित ActionFilterAttribute तरीकों में से एक से संबंधित है है, तो
संबंधित मुद्दे