2010-04-06 9 views
6

मैंने अभी तक पूर्ण आधिकारिक की उम्मीद में एएसपी.NET एमवीसी 2 (आरटीएम) को एक परियोजना को अपग्रेड करने का परीक्षण चलाया है। नेट 4.0 इस महीने के अंत में रिलीज हो रहा है।एएसपी.नेट एमवीसी 2 (आरटीएम) प्रतिक्रिया फ़िल्टरिंग को तोड़ता है - "फ़िल्टरिंग की अनुमति नहीं है"

हमारे आवेदन हमारे सीएसएस और जावास्क्रिप्ट के लिए एक minimizer उपयोग कर रहा है। ऐसा करने के लिए, यह एक कस्टम फ़िल्टर सेट करने के लिए HttpResponse.Filter संपत्ति का उपयोग कर रहा है।

अपग्रेड के साथ, इस संपत्ति के लिए सेटर HttpException फेंक रहा है "फ़िल्टरिंग की अनुमति नहीं है।" देख रहे हैं कि परावर्तक में HttpResponse.Filter संपत्ति यह दिखाता है:

set 
    { 
     if (!this.UsingHttpWriter) 
     { 
      throw new HttpException(SR.GetString("Filtering_not_allowed")); 
     } 

...

private bool UsingHttpWriter 
{ 
    get 
    { 
     return ((this._httpWriter != null) && (this._writer == this._httpWriter)); 
    } 
} 

जाहिर है कुछ रास्ता HttpResponse MVC2 में उत्पादन धारा को लिखित रूप में बदल गया है। क्या किसी को पता है कि परिवर्तन क्या है, या कम से कम इसके लिए एक समाधान?

संपादित करें: यह बहुत कट्टरपंथी लगता है। कुछ आगे की जांच पड़ताल से पता चलता है कि ASP.Net MVC 2 RTM, एक System.Web.Mvc.ViewPage.SwitchWriter एक HttpResponse के आउटपुट संपत्ति के रूप में उपयोग करते हुए, जबकि MVC 1 एक सादे पुराने HttpWriter उपयोग कर रहा था है। यह बताता है कि अपवाद क्यों फेंक दिया जा रहा है।

लेकिन उस की व्याख्या नहीं करता इसलिए वे पूरी तरह से इस कार्यक्षमता को तोड़ने के लिए चुन लिया है। This thread इंगित करता है कि यह सिर्फ अस्थायी है ... लेकिन इससे मुझे बहुत परेशान होता है ... यह सब के बाद आरटीएम है।

किसी भी आगे की टिप्पणियां इस पर सराहना की। MVC में

+0

इसके लायक होने के लिए, एमवीसी 2 आरटीएम पहले ही रिलीज़ हो चुका है: http://www.microsoft.com/downloads/details.aspx?FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9&displaylang=en – Jaxidian

+0

धन्यवाद - यही है मैं अपग्रेड करने की कोशिश कर रहा हूं। मुझे शीर्षक स्पष्ट करना चाहिए। – womp

+0

जो आप करने की कोशिश कर रहे हैं वह संभवतः पहले स्थान पर समर्थित नहीं था। यदि आप अनिवार्य रूप से हुक करने की कोशिश कर रहे हैं कि स्थिर सामग्री कैसे दी जाती है, तो इसे दूर करने के लिए वेबफॉर्म व्यू इंजन से न जाएं। आप वास्तव में क्या करने की कोशिश कर रहे हैं? इसे खींचने के लिए आपको फ़िल्टर की आवश्यकता क्यों है? – Levi

उत्तर

3

दृश्य, नियमित रूप से .aspx पृष्ठों के विपरीत, एचटीएमएल templating प्रणाली के रूप में इलाज किया जा के लिए होती हैं। यहां समस्या इस तथ्य से उत्पन्न होती है कि दृश्य के बाद निष्पादित करने के बाद, पृष्ठ ने क्लाइंट को भेजे जा रहे HTML में हेरफेर करने के लिए प्रतिक्रिया फ़िल्टर स्थापित करने का प्रयास किया था।

इस मामले में समाधान प्रतिक्रिया फ़िल्टर स्थापना को एमवीसी पाइपलाइन के पहले भाग में ले जाना है। उदाहरण के लिए, एक कस्टम एक्शन फ़िल्टर का उपयोग करके, आप अपने कस्टम प्रतिक्रिया फ़िल्टर को स्थापित करने के लिए OnResultExecuting() विधि को ओवरराइड कर सकते हैं। यह इंस्टॉलेशन को दृश्य से बाहर ले जाता है और सरल HTML-केवल विचारों के सिद्धांत का उल्लंघन नहीं करता है।

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