IIS कुछ फ़ाइल एक्सटेंशन परोस नहीं सकता


10

मैं .JSON फ़ाइलों की सेवा कर रहा हूं, लेकिन फ़ाइल मौजूद होने के बावजूद, IIS किसी भी फ़ाइल के एक्सेस होने पर 404 त्रुटि फेंकती रहती है। मैंने .JS में से एक फ़ाइल का नाम बदलने की कोशिश की, और यह काम करता है।

कोई भी सूचक जो सेटिंग इस समस्या का कारण बन सकता है?

जवाबों:


21

डिफ़ॉल्ट रूप से, W2K3 और इसके बाद के संस्करण में IIS उन फ़ाइलों की सेवा नहीं करेगा जो MIME प्रकार की नहीं हैं जिनके बारे में यह जानता है (बजाय 404 त्रुटियों को लौटाए)।

आपको उस प्रकार की फ़ाइल को परोसने के लिए IIS में MIME प्रकार जोड़ना होगा। आप इसे साइट स्तर पर या सर्वर स्तर पर सेट कर सकते हैं।

पूरे सर्वर के लिए इसे सेट करने के लिए:

  • IIS प्रबंधक में सर्वर के लिए गुण खोलें और MIME प्रकार पर क्लिक करें
  • "नया" पर क्लिक करें। एक्सटेंशन के लिए "JSON" और MIME प्रकार के लिए "एप्लिकेशन / json" दर्ज करें।

मैं एक नया MIME प्रकार जोड़ता हूं, वेब साइट को पुनरारंभ करता हूं, लेकिन फिर भी 404। वैसे भी धन्यवाद, मुझे लगता है कि यह एक समस्या हो सकती है।
एड्रियन गोडोंग

हम्म। आपने जो बदला है, उसे दोबारा जांचें। "फ़ाइल का नाम बदला गया और यह काम किया" लक्षण इस व्यवहार का क्लासिक संकेतक है।
इवान एंडरसन

ट्रिपल ने इसकी जाँच की। मैं मान रहा हूँ कि आपको पूरे सर्वर को पुनः आरंभ करने की आवश्यकता नहीं है, है ना?
एड्रियन गोडोंग

हम्म ... मैं तुम्हें क्या करना है बताने के लिए लड़खड़ा रहा हूँ। मैंने इसे स्वयं Windows Server 2003 SP2 के एक साफ VM में किया था। मैंने IIS स्थापित किया, "C: \ inetpub \ wwwroot" में एक "foo.json" फ़ाइल बनाई, सत्यापित किया कि मैंने एक ब्राउज़र में " लोकलहोस्ट / foo.json " को हिट करते समय 404 प्राप्त किया , "MSON प्रकार" के लिए जोड़ा ।JSON साइट पर "/" एप्लिकेशन / जसन ", फिर मेरी अभी भी खुली IE विंडो पर गया और F5 मारा और पृष्ठ लोड देखा। मुझे लगता है कि आपको खेलने में कुछ और भी मिला है।
इवान एंडरसन

1
मुझे यह सुनिश्चित करने की भी ज़रूरत थी कि वेब सेवा एक्सटेंशन मेरे लिए यह काम करने में सक्षम थे ...
gandalf

3

मुझे भी यही समस्या थी। IIS कुछ ऐसा करता है जिसे MIME प्रकार फ़िल्टरिंग कहा जाता है। यदि यह किसी विशिष्ट फ़ाइल एक्सटेंशन के MIME प्रकार को नहीं जानता है, तो यह 404 त्रुटि देता है।

IIS <7 पर: साइट (या सर्वर) गुण खोलें। HTTP-Header टैब पर क्लिक करें । MIME प्रकार बटन पर क्लिक करें। फ़ाइल प्रकार * को MIME प्रकार "एप्लिकेशन / ऑक्टेट-स्ट्रीम" के साथ जोड़ें।

IIS 7 के लिए: IIS प्रबंधक खोलें। सर्वर या वेबसाइट पर क्लिक करें। MIME प्रकार सुविधा आइकन पर डबल-क्लिक करें । क्रियाएँ फलक में, जोड़ें क्लिक करें । "फ़ाइल नाम एक्सटेंशन" बॉक्स के साथ * और MIME टाइप बॉक्स को "एप्लिकेशन / ऑक्टेट-स्ट्रीम" के साथ पॉप्युलेट करें।


2

मैंने MIME प्रकार .json- text/jsonको IIS में साइट में ब्राउज़र के रूप में पाठ के रूप में देखने के लिए जोड़ा ।


इस! इस! इस!
क्षुल्लक

1

एक और सामान्य उत्तर में उत्तरों को समेकित करने के लिए:

यहाँ कैवियट आता है:

  • जब तक एक स्क्रिप्ट हैंडलर (सक्रिय सामग्री इंजन, उदाहरण के लिए, ASP / ASPX / PHP / Java / ISAPI / etc) उनके साथ जुड़ा हुआ है
    • इसका मतलब यह है कि IIS उन्हें स्थिर सामग्री के रूप में नहीं, बल्कि सक्रिय सामग्री के रूप में मानता है
  • किसी भी एक्सटेंशन द्वारा दी गई सक्रिय सामग्री फ़ाइलों में वह एक्सटेंशन होना चाहिए जो वेब सेवा एक्सटेंशन प्रतिबंध सूची (IIS 7 में उर्फ ​​ISAPI / CGI प्रतिबंध) की अनुमति देता है)
    • यदि आप IIS 7 में एक सक्रिय सामग्री प्रकार पर 404 प्राप्त कर रहे हैं, तो इसका मतलब यह भी हो सकता है कि आपका हैंडलर स्थापित नहीं है - इसलिए आपको वास्तव में उस फ़ाइल एक्सटेंशन का समर्थन करने वाले घटक को स्थापित करने की आवश्यकता है (उदाहरण के लिए, यदि .aspx फाइलें उत्पन्न होती हैं। 404, आपके पास शायद ASP.Net स्थापित नहीं है)

यदि आप इस तरह की समस्या का सामना कर रहे हैं, तो वेबसाइट की वेब लॉग फ़ाइलों को खोलें, और सब-स्टेटस कोड (यानी 404 3) पर एक नज़र डालें ताकि यह निर्धारित किया जा सके कि आपकी वेबसाइट IIS 6, या के लिए सामग्री क्यों नहीं परोस रही है।

  • असफल अनुरोध अनुरेखण का उपयोग करें
  • (या स्थानीय कंसोल पर विस्तृत त्रुटियाँ)

IIS 7 में।


यह "चेतावनी" समझ में नहीं आता है: "... इसका मतलब यह है कि IIS उन्हें सक्रिय सामग्री के रूप में मानता है, न कि स्थिर फाइलें" Web.config json फ़ाइलों को स्थैतिक घोषित करता है: <staticContent> <mimeMap fileExtension = "। Json" mimeType =। "एप्लीकेशन / जसन" /> </ staticContent>

"जब तक कोई स्क्रिप्ट हैंडलर उनके साथ संबद्ध नहीं होता है तब IIS उन स्थिर फ़ाइलों की सेवा नहीं करेगा, जो उनके साथ MIME प्रकार से जुड़ी हुई हैं" फिर भी एक सच्चे कथन के रूप में (IMO) काम करता है। किसी की सेवा करने में असमर्थ होने की स्थिति में, ऐसा लगता है कि उनकी परिभाषा कहीं भी उनके विन्यास फाइल में नहीं है। शायद आपकी विंडोज की कॉपी उनकी हाल की तुलना में अधिक है?
TristanK

1

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

ये लोग कहने के लिए सही हैं कि आपको MIME प्रकार जोड़ने की आवश्यकता है।

MIME प्रकार सर्वर पर फ़ाइल एक्सटेंशन को सक्षम करता है और मैपिंग हैंडलर IIS को बताता है कि इसके साथ क्या करना है।

इसलिए आपको मैपिंग हैंडलर को भी जोड़ना होगा , और इसके लिए आपको मैपिंग को संभालने के लिए क्लासिक एस्प नाम से विंडोज फीचर स्थापित करना होगा।

यहां मैपिंग हैंडलर को जोड़ने का तरीका बताया गया है:

  1. IIS7 प्रबंधक खोलें
  2. IIS सर्वर (या केवल साइट के लिए गुणों पर जाएं, यदि आप एक वैश्विक सेटिंग नहीं चाहते हैं)
  3. पर क्लिक करें Handler Mappings
  4. पर क्लिक करें Add a Script Map
  5. गुण दर्ज करें:
    • अनुरोध पथ: *.json
    • निष्पादन: C:\WINDOWS\system32\inetsrv\asp.dll
    • नाम: JSON(आप इसे अपनी पसंद के अनुसार कह सकते हैं)
  6. ठीक क्लिक करें, और आप कर रहे हैं। इसे काम करना शुरू करना चाहिए और आपको IIS रीसेट की आवश्यकता नहीं है।

इसके अलावा, कुछ लोगों को `उपयोग करने के लिए आवेदन / x-जावास्क्रिप्ट आपको बता देंगे 'माइम-प्रकार आवेदन के रूप में, लेकिन JSON जावास्क्रिप्ट, नहीं है दर असल (यह है एक सबसेट, हालांकि) और इसलिए यह होना चाहिए' आवेदन / json 'के बजाय , जैसा कि यह है कि JSON के लिए IANA-पंजीकृत मीडिया प्रकार है।


0

IIS में रिक्वेस्ट फ़िल्टरिंग की भी जाँच करें। यदि ".json" वहाँ है और अवरुद्ध है, तो कुछ और काम नहीं करेगा।

यहां छवि विवरण दर्ज करें

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