ASP.NET MVC फ्रेमवर्क 4.5 CSS बंडल होस्टिंग पर काम नहीं करता है


144

मैं MVC4 में लिखे ऐप हार्बर पर एक ऐप चला रहा हूं।

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

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

जब मैं Appharbor को एप्लिकेशन अपलोड करता हूं तो मुझे कोड में बंडल दिखाई देता है लेकिन ऐप काम नहीं करता है।

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

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

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


यकीन नहीं होता अगर आपने इस मुद्दे को सुलझा लिया लेकिन यह लेख मेरा तय किया stackoverflow.com/a/18474844/955831
जेसन फोगलिया

जवाबों:


284

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

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

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

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


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

3
इस जवाब के लिए थैंक्स - मुझे पागल कर रहा था!
रिच टर्नर

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

1
धन्यवाद, यह आज मुझे पागल कर रहा था
xingyu

11
+1 यह उत्तर मुझे यह समझने में मदद करता है कि वर्चुअल पथ बंडल के साथ कैसे काम करता है। मैंने msdn ( asp.net/mvc/tutorials/mvc-4/bundling-and-minification ) पर मूल पोस्ट पढ़ी, लेकिन आपके उत्तर के साथ मेरी समस्या को हल करने के बाद, मैंने पोस्ट के अंत में पाया कि कुछ पाठ आभासी के साथ बात कर रहा है पथ: "बंडल बनाते समय पालन करने के लिए एक अच्छा सम्मेलन" बंडल "को बंडल नाम में एक उपसर्ग के रूप में शामिल करना है। यह संभव रूटिंग संघर्ष को रोक देगा।" मुझे लगता है कि इस वाक्य को लाल / पीली चेतावनी छवि के साथ बोल्ड किया गया है। : D धन्यवाद!
शमूएल

45

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

इसके लिए दो सुधार हैं (आपको केवल एक करने की आवश्यकता है)

ए) बंडल नामों से एक्सटेंशन निकालें। (अनुशंसित) यह .NET को अनुरोध को संसाधित करने और बंडलमॉडल के माध्यम से चलाने का कारण बनेगा।

ख) इसे अपने web.config में जोड़ें। system.webServer सेक्शन, जो .NET को run.js और। बंडल अनुरोधों के माध्यम से अनुरोध करेगा।

<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


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

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

1
यह सही उत्तर होना चाहिए, यह मुझे एक ही समस्या के साथ मदद करता है।
प्यूलसक

महान जवाब यह मेरी मदद
DKR

यह चीज़ गुम होने के साथ <मॉड्यूल> अनुभाग से web.config ओह मैन ...
XDS

19

मेरे साथ भी हुआ, जब मैंने अपने ASP.NET MVC ऐप को AppHarbor पर तैनात करने की कोशिश की।

मेरे पास नाम के साथ एक स्टाइलशीट बंडल था

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

और फ़ोल्डर संरचना थी

-- सामग्री

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

बस बंडल नाम बदलने से "~/Content/bootstrap-css"मेरा मुद्दा फिर से जुड़ गया।


15

मुझे पता है कि मुझे इस सवाल पर 4 साल की देर है लेकिन यह मेरे लिए काम कर रहा है।

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

   BundleTable.EnableOptimizations = true;     // Added this           
}

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

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

9

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

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]")


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

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

5

मैंने बंडलकॉन्फिग क्लास में कोड की निचली पंक्ति को जोड़कर समस्या हल की

BundleTable.EnableOptimizations = false;

3

मैं जो करता हूं वह बहुत सरल है,

मैं ScriptBundle के अंत में इस तरह "js" जोड़ता हूं: new ScriptBundle ("~ / बंडलों / appjs") और मैं StyleBundle के अंत में "css" जोड़ देता हूं जैसे: new StyleBundle ("~ / content / appcss")

मेरे फ़ोल्डर के नाम कभी भी "js" या "css" के साथ समाप्त नहीं होते हैं।

इससे हो जाना चाहिए।


2

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


1

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

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

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


0

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


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.