13

मैं इस तरह एक बंडल को परिभाषित करना चाहते हैं:क्या बंडल नाम में फ़ाइल एक्सटेंशन रखने का कोई तरीका है?

bundles.Add(
    new StyleBundle("~/style.css").Include(
     //... 
)); 

बंडल नाम सिर्फ "~/style" इस काम करता है, लेकिन फ़ाइल एक्सटेंशन के साथ यह हमेशा वापस आने वाले 404. मैं सीएसएस और जे एस के लिए सर्वर खोजों पर शक ड्राइव पर फ़ाइलें और बंडलिंग सिस्टम को अनदेखा करती है, लेकिन मुझे कोई और नहीं मिल रहा है जो बंडल नामों में फ़ाइल एक्सटेंशन शामिल करने का प्रयास कर रहा है। क्या यूआरएल रीराइट की तरह कुछ ऐसा करना संभव है?

उत्तर

19

आप web.config में अपने <system.webServer> अनुभाग के लिए निम्न जोड़ सकते हैं:

<modules runAllManagedModulesForAllRequests="true" /> 

इससे यह सुनिश्चित होगा कि इस तरह के .js और .css के रूप में स्थिर संसाधनों के लिए अनुरोध प्रबंधित मॉड्यूल से होकर गुजरेगी और एएसपी द्वारा रोका जा। नेट एमवीसी।

सभी अनुरोधों के लिए runAllManagedModulesForAllRequests सक्षम करने के विकल्प के रूप में आप उन्हें केवल उन यूआरएल के लिए कॉन्फ़िगर कर सकते हैं जिन्हें आप उपयोग करने की आवश्यकता है। तो <handlers> अंदर जोड़ने निम्नलिखित:

<handlers> 
    <!-- ... --> 
    <add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
    <add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
</handlers> 
+3

हम्म, वहाँ एक कम कठोर समाधान है कि केवल .js और .css फ़ाइलों को प्रभावित करेगा है? – sbking

+0

निश्चित रूप से, मेरा अद्यतन उत्तर देखें। –

+1

+1 लेकिन 'path =" *। Bundle.js "होने से हैंडलर वास्तविक फ़ाइलों के लिए चलने से रोक देगा। –

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