2012-08-22 13 views
131

पर काम नहीं करता है मैं एमवीसी 4 में लिखे गए ऐप बंदरगाह पर एक ऐप चला रहा हूं।एएसपी.नेट एमवीसी ढांचा 4.5 सीएसएस बंडल होस्टिंग

सीएसएस फाइलों का एक बंडल काम नहीं करता है। डीबग मोड में मेरे स्थानीय कंप्यूटर में मैं ऐप का कोड देखता हूं और मैं फाइलें देखता हूं। ऐप काम के रूप में काम करता है।

<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/> 
<link href="/Content/css/home/Home.css" rel="stylesheet"/> 

जब मैं Appharbor को मैं कोड लेकिन अनुप्रयोग does not काम में बंडल देख एप्लिकेशन अपलोड करें।

<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/> 

जब मैं href में है कि लिंक ब्राउज़ मैं 403 मिलता है - निषिद्ध: प्रवेश निषेध है।

इसका निवारण कैसे करें?

+0

सुनिश्चित नहीं है कि आपने इस समस्या का समाधान किया है लेकिन इस आलेख ने मेरा निर्धारण किया है। http://stackoverflow.com/a/18474844/955831 –

उत्तर

268

मेरा अनुमान है कि पथ Content/css आपके ऐप में डिस्क पर मौजूद है। इस मामले में आईआईएस अनुरोध को संभालेगा, एमवीसी नहीं।

सुनिश्चित करें कि बंडल के लिए वर्चुअल पथ (स्टाइलबंडल कन्स्ट्रक्टर का पैरामीटर) फ़ाइल सिस्टम में किसी फ़ोल्डर से मेल नहीं खाता है।

टिप्पणियों से:

बंडल "जब बंडलों बनाने एक अच्छा का पालन करना शामिल करने के लिए है" "। बंडल नाम में उपसर्ग के रूप में यह एक संभव मार्ग संघर्ष को रोकने जाएगा।"

+2

धन्यवाद। क्या यह सामान्य है कि यह स्थानीयहोस्ट में चलाने पर काम करता है? –

+3

इस उत्तर के लिए Thnaks - मुझे पागल कर रहा था! –

+6

@ रिकार्डोपोलो, "लोकलहोस्ट" द्वारा, क्या आपका मतलब है कि इसे अपनी विकास मशीन पर आईआईएस एक्सप्रेस पर चलाया जाए? फिर हां, यह सामान्य है कि यह वहां काम करता है क्योंकि आप डीबग मोड में चल रहे हैं, जो बंडलिंग को अक्षम करता है। – bvgheluwe

2

यह 'स्क्रिप्टबंडल क्लास' पर भी लागू होता है, यह सुनिश्चित करें कि कन्स्ट्रक्टर को 'पैरामीटर नाम' वेब एप्लिकेशन फ़ाइल सिस्टम में पथ से मेल नहीं खाता है। याद रखें कि आईआईएस फ़ाइल/अनुरोध की सेवा करने की कोशिश करेगा।

43

यह समस्या डिफ़ॉल्ट रूप से है .NET एक .js या .css एक्सटेंशन वाले अनुरोधों को "संसाधित नहीं करता" है।

इस के लिए दो फिक्स कर रहे हैं

ए) बंडल नाम से एक्सटेंशन निकालें (आप केवल एक करने की ज़रूरत है)। (अनुशंसित) यह अनुरोध को संसाधित करने और इसे BundleModule के माध्यम से चलाने के लिए .NET का कारण बन जाएगा।

बी) system.web सर्वर अनुभाग में अपने web.config में जोड़ें जो .NET को BundleModule के माध्यम से .js और .css अनुरोध चलाने के लिए कारण देगा। रे मोरो जो अपने ब्लॉग पर वास्तविक कारण पता लगा और मेरे साथ इसे साझा किया के लिए बाहर

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="BundleModule" /> 
    <add name="BundleModule" type="System.Web.Optimization.BundleModule" /> 
</modules> 

बिग चिल्लाओ: http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html

+0

एक दूसरे विकल्प के साथ रूट कारण पर अधिक जानकारी के साथ अपडेट किया गया। – CDeutsch

+0

404 त्रुटि से संबंधित 403 नहीं है। –

+1

मुझे यह समस्या हो रही थी क्योंकि मेरा बंडल का नाम "css" में समाप्त होने वाला फ़ोल्डर जैसा नाम था। हालांकि मेरे बंडल में फाइल एक्सटेंशन नहीं था, सुझाव मुझे समस्या का कारण बनता है। – dsnunez

0

मुझे लगता है कि (403 निषिद्ध) त्रुटि के साथ एक ही समस्या है। मेरे मामले में कारण मेरे संगठन में प्रॉक्सी सर्वर मेरी सीएसएस फ़ाइल को ब्लॉक करता है। सीएसएस फ़ाइल का नाम ब्लॉक नियमों में से एक से मेल खाता है।

1

समस्या एन्क्रिप्टेड फ़ाइल से भी आ सकती है। जब मैंने बूटस्ट्रैप डाउनलोड किया और आपूर्ति की गई फाइलों का इस्तेमाल किया तो यह मेरे लिए हुआ। उन्होंने विंडोज एक्सप्लोरर में हरा दिखाया और विजुअल स्टूडियो में ठीक काम किया, लेकिन जब तैनात किया गया, तो मुझे 403 त्रुटि मिली।

आप देख सकते हैं कि वे गुणों पर जाकर एन्क्रिप्ट किए गए हैं, फिर उन्नत गुण हैं और एक एन्क्रिप्टेड चेकबॉक्स है।

अनचेक करें और यह अब कोई समस्या नहीं होगी।

8

403 त्रुटि हल हो गई। यहां 403 त्रुटि के लिए एक विस्तृत स्पष्टीकरण और समाधान है।
The solution सीएसएस बंडल के लिए प्रदर्शित किया गया है। हालांकि यह जावास्क्रिप्ट पर भी लागू होता है।

http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved

संक्षेप में, यह सुनिश्चित करें कि आभासी पथ [Script | Style]Bundle("~/content/[script | css]") फाइल सिस्टम में एक फ़ोल्डर से मेल नहीं खाता बनाने के (जैसे C:\approot\Content\[script | css]) के बजाय [Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")

+1

धन्यवाद, यह समस्या है जिसे मैंने अनुभव किया। इसे हल करने के लिए, BundleConfig.cs में मैंने @ Styles.Render ("~/content/css") से @ Styles.Render ("~/bundles/css") से पथ बदल दिया। अब यह डीबग मोड में स्थानीय रूप से चलते समय और रिलीज या डीबग मोड में प्रकाशित होने पर काम करता है। –

+0

अच्छा जवाब, लेकिन आपको केवल एक लिंक नहीं छोड़ना चाहिए, कम से कम इस लेखन-पत्र के बुनियादी कदम यहां होने के लिए बहुत अच्छा होगा, अगर लिंक की गई वेबसाइट डाउन हो। –

+0

@ विक्टर एम। बारबोसा, अच्छा बिंदु। मैंने अपनी पोस्ट अपडेट की है। – yantaq

3

मुझे क्या बहुत सरल है,

("~/बंडलों/appjs") नई ScriptBundle और मैं तो जैसे StyleBundle के अंत में "सीएसएस" जोड़ें::

मैं बहुत तरह ScriptBundle के अंत में "जे एस" जोड़ने के नए StyleBundle ("~/सामग्री/एपसीएसएस ")

मेरे फ़ोल्डर के नाम "जेएस" या "सीएसएस" के साथ कभी खत्म नहीं होते हैं।

ऐसा करना चाहिए।

18

मेरे साथ भी हुआ, जब मैंने AppHarbor पर अपने एएसपी.नेट एमवीसी ऐप को तैनात करने का प्रयास किया। सामग्री

- -

मैं नाम

@Styles.Render("~/Content/bootstrap") 

और फ़ोल्डर संरचना के साथ एक स्टाइलशीट बंडल

था सामग्री \ बूटस्ट्रैप \ ...

बस बंडल नाम को "~/Content/bootstrap-css" मीटर में बदलकर वाई मुद्दा फिर से मिल गया।

+0

धन्यवाद, यह मेरे लिए काम किया! – JReam

7

मुझे पता है कि मैं इस प्रश्न के 4 साल बाद हूं लेकिन यह मेरे लिए काम करता है।

public static void RegisterBundles(BundleCollection bundles) 
{ 
    ... 

    BundleTable.EnableOptimizations = true;  // Added this   
} 
+2

ऊपर और नीचे के सभी उत्तरों में से। यह एकमात्र ऐसा है जो मेरे लिए काम करता है। –

+0

यह डीबग मोड में होने पर ऑप्टिमाइज़ेशन को सक्षम बनाता है। हालांकि यह जांचने का एक शानदार तरीका है कि बंडल एक देव मशीन पर काम करते हैं या नहीं, आपको यह कथन अपने कोड में नहीं छोड़ना चाहिए। –

0

मुझे पता चला फ़ाइल bootstrap.css सामग्री फ़ोल्डर में नहीं था, इसलिए मैं संकुल में इसके लिए देखा और वहाँ चिपकाया .. यह काम किया!

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