2013-07-29 2 views
10

वर्तमान में एएसपीएनटी एमवीसी 3 वीएस 2010 का उपयोग कर रहा है। बस वीएस 2013 स्थापित किया गया और अब हमारा कस्टम फ़िल्टर काम नहीं कर रहा है। जब पृष्ठ प्रस्तुत किया जाता है तो यह केवल एक खाली पृष्ठ प्रदर्शित करता है। फ़िल्टर में डेटा है और इसे लिखता है लेकिन चेनिंग प्रक्रिया में कुछ काम नहीं कर रहा है।HttpContext.Response.Filter

var response = filterContext.HttpContext.Response; 
response.Filter = new MappingResponse(response.Filter); 

विजुअल स्टूडियो 2010 में फ़िल्टर System.Web.HttpResponseStreamFilterSink है।

दृश्य स्टूडियो 2013 में फिल्टर Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter

भी डॉक्स में उस वर्ग ढूँढ नहीं पा रहे है। ऐसा लगता है कि जब मैं स्ट्रीम क्लास को कॉल करता हूं तो यह लिखने की विधि को चेन नहीं कर रहा है।

यह वास्तविक कोड है, जहां मैं धारा

var responseBuffer = UTF8Encoding.UTF8.GetBytes(htmlPage); 
responseStream.Write(responseBuffer, 0, responseBuffer.Length); 
+0

को यह समस्या व्यापक है पर अधिक जानकारी। यह तब भी होता है जब आप HttpContext.Current.Response.Write ("{'b': 'test 2'}") का उपयोग करते हैं; एक डब्ल्यूसीएफ में एएसपीनेट में होस्ट ऑपरेशन प्राप्त करें। ब्राउज़र को अनलिंक करने के नीचे दिए गए समाधान ने मेरे लिए समस्या तय की है। – Rafi

उत्तर

10

लिखने के बाद है एक लंबे चारों ओर से खुदाई मैंने देखा है कि VS2013 एक नया इसके अतिरिक्त के साथ आते हैं; सिग्नलआर - जो यह निकलता है वह धमनीफिल्टर समस्या से जुड़ा हुआ है।

तो, इस समस्या को हल करने के लिए, अपने डीबग बटन और वॉयला के बगल में "ब्राउज़र लिंक सक्षम करें" सुविधा को अनचेक करें; फ़िल्टर फिर से अपेक्षित काम करता है। अभी भी अजीब है कि वीएस2013 श्रृंखला फिल्टर नहीं करता है।

Uncheck the "Enable Browser Link"

इसके अलावा, ध्यान दें कि यह एक सामान्य ASP.NET सुविधा है और इसलिए MVC तक ही सीमित नहीं।

इतिहास के लिए संरक्षित - उत्तर ऊपर

है मैं एक ही बात का सामना कर रहा हूँ, लेकिन अभी तक यह नया IISExpress से संबंधित नहीं है और VS2013 perse लगता है। वीएस2012 में ठीक काम करने के लिए वही भाग्य है जो वीएस2013 स्थापित करके पेश किया गया था।

सामान्य आईआईएस के माध्यम से निष्पादित होने पर समस्या गायब हो जाती है, इसलिए आपका कोड ठीक काम कर रहा है। अगर आपको यह {Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter} अक्षम करने का कोई तरीका मिल जाए तो मुझे बताएं।

आगे की जांच से पता चलता है कि applicationhost.config (आमतौर पर% USERPROFILE% \ दस्तावेज़ \ IISexpress \ config में स्थित) वास्तव में VS2013 द्वारा बदला जाता है। मेरे पास बैकअप का नाम बदलकर ApplicationHost.config.20120825120333.bak है। इस रहस्य का हल किसी भी तरह से इस कॉन्फ़िगरेशन परिवर्तन में छिपा हुआ है।

कॉन्फ़िगरेशन की सीधी बहाली IISExpress VS2013 से शुरू करने में असमर्थ बनाती है।

एक नहीं तो-अच्छा समाधान:

आप (Ctrl + F5 के बराबर) बंद डिबग कर सकते हैं और IISExpress में कार्य करेगा और काम के रूप में उम्मीद। डीबग सक्षम करने से एक बार फिर इस सुविधा को पेश किया जाएगा कि यह प्रविष्टि है।

<system.web> 
    <compilation targetFramework="4.5" debug="false"/> 
    <httpRuntime targetFramework="4.5"/> 
    </system.web> 
4

हम सिर्फ

वी.एस. 2015 में इस मुद्दे को मारा माइकल के जवाब देने के लिए जोड़ने के लिए, सबसे सुरुचिपूर्ण समाधान IMHO web.config में ब्राउज़र लिंक सुविधा को अक्षम करने के लिए है, तो यह अतिरिक्त बिना सभी डेवलपर्स के लिए काम करता है मैनुअल कदम।

<appSettings> 
    <add key="vs:EnableBrowserLink" value="false"/> 
</appSettings> 

सुविधा और कैसे उसे निष्क्रिय @http://www.asp.net/visual-studio/overview/2013/using-browser-link#disabling

+0

पर स्पॉट! धन्यवाद। मेरा अनुमान है कि क्योंकि सिग्नलआर प्रक्रिया लिंक के दौरान स्ट्रीम को लॉक करने के लिए अनुरोध स्ट्रीम में विशेष स्क्रिप्ट इंजेक्ट करता है। कितना अस्पष्ट, धन्यवाद। – AverageJoe