ASP.NET के साथ .json फ़ाइल को डाउनलोड करने की अनुमति कैसे दें


125

मैं एक पुराने ASP.NET साइट (IIS6 मैं विश्वास करने के लिए नेतृत्व कर रहा हूं) से * .json फ़ाइलों के डाउनलोड को कैसे सक्षम कर सकता हूं?

मुझे JSON फाइल के बजाय 404 पेज मिल रहा है।

क्या मुझे web.config फ़ाइल बनाने की आवश्यकता है? इसमें क्या जाता है?


1
आपको शायद इसके लिए एक MIME प्रकार जोड़ना होगा।
vcsjones

1
एक जावास्क्रिप्ट में उपयोग करने के लिए या एक पर बचाने के लिए HD?
रेमी

मैं इसे jQuery.ajax (url: ...
Lea Hayes

2
स्थानीय आईआईएस के पास लिस्टिंग के बाद इसे जोड़ने पर, आपकी अगली तैनाती पर यह डुप्लिकेट लिस्टिंग से 500 सर्वर त्रुटि को फेंक सकता है इसलिए इसे टिप्पणी दें।
टॉम मल्लार्ड

जवाबों:


118

JSON MIME प्रकार को IIS 6 में जोड़ें। MSDN के कॉन्फ़िगर MIME प्रकार (IIS 6.0) के निर्देशों का पालन करें ।

  • विस्तार: .जॉन
  • MIME प्रकार: आवेदन / json

परिवर्तन के बाद IIS को पुनरारंभ करना न भूलें।

अद्यतन: IIS7 और नए पर ऐसा करने के लिए आसान तरीके हैं। सेशन विशेष रूप से IIS6 मदद के लिए कहा जाता है, इसलिए मैं इस उत्तर को छोड़ रहा हूं। लेकिन यह उत्तर अभी भी बहुत ट्रैफ़िक प्राप्त कर रहा है, भले ही IIS6 अब बहुत पुराना है। उम्मीद है कि आप कुछ नया प्रयोग कर रहे हैं, इसलिए मैं यह उल्लेख करना चाहता था कि यदि आपके पास एक नया IIS7 या नया संस्करण है, तो उन नए संस्करणों के लिए एक सरल समाधान के लिए @ ProVega का उत्तर नीचे देखें।


1
चीयर्स, लेकिन यह web.config या वैश्विक कोड फ़ाइल के अलावा किसी भी चीज तक पहुंच के बिना एक साझा होस्टिंग पैकेज पर है
ली हेस

यदि आपके पास IIS 6.0 सेटिंग्स तक पहुंच नहीं है, और आपके प्रदाता का समर्थन आपके लिए MIME प्रकार को नहीं जोड़ेगा, तो आपको प्रदाताओं को स्विच करना होगा, या नए प्रदाताओं के लिए IIS 7.0 के साथ उस प्रदाता पर यदि वे इसे प्रदान करते हैं, तो इसका समर्थन करें।
जॉन एडम्स

1
हां, ASP.Net एक ASPX हैंडलर या एक साधारण पृष्ठ के माध्यम से फाइल को पारित कर सकता है, लेकिन आप URL में .json फ़ाइल प्रकार का उपयोग नहीं कर पाएंगे क्योंकि यह ASP.Net के लिए उस अनुरोध को पारित नहीं करेगा। क्रम। यह कुछ ऐसा होना चाहिए जो ASPX रनटाइम से होकर गुजरे। यदि आपके पास IIS सेटिंग्स तक पहुंच नहीं है, तो इसे मौजूदा एक्सटेंशन की तरह होना होगा .ASPX। फिर से, IIS7 वाले सर्वर पर स्विच करने से कई और अधिक और आसान समाधान मिलते हैं।
जॉन एडम्स

1
एप्लिकेशन पूल को पुनरारंभ करना IIS को पूरी तरह से पुनरारंभ करने के बजाय पर्याप्त होना चाहिए (यह मेरे मामले में था)।
kltft

1
@kltft True, एक एपपूल रिस्टार्ट अपडेट को ट्रिगर करेगा, लेकिन केवल उस पूल के लिए। इन चरणों में सभी के लिए सेटिंग बदलना शामिल है, और उन्हें असंगत स्तर की सेटिंग्स में रखने से बाद में आसानी से भ्रम हो सकता है। मैं सुरक्षा और पवित्रता के लिए संपूर्ण आईआईएस प्रक्रिया को फिर से शुरू करने की सलाह देता हूं। लेकिन एक चुटकी में, अगर हर कोई पेशेवरों / विपक्षों के लिए सहमत है, तो एक ऐप्पल पुनरारंभ काम कर सकता है।
जॉन एडम्स

211

यदि आप अपनी साइट पर मैन्युअल रूप से समर्थन जोड़ना चाहते हैं, तो आप बस अपने web.config को system.webServer अनुभाग में जोड़ सकते हैं :

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

यह IIS के तहत एक "स्थानीय" कॉन्फ़िगरेशन जोड़ देगा। यह IIS6 में काम नहीं करता है, लेकिन IIS7 और नए में काम करता है।


6
पूर्ण web.configपथ को शामिल करने के लिए अपने उत्तर को अपडेट करें ।
GFoley83

जीवन रक्षक, धन्यवाद :)
गौरव

1
किसी कारण से, इसने मेरी पूरी साइट को गड़बड़ कर दिया - सीएसएस ने अब काम नहीं किया!
TheJeff

@ TheJeff - जो मेरे साथ हुआ था, लेकिन यह इसलिए है क्योंकि मैंने दो स्थैतिक माइमपाइप जोड़े हैं, एक JSON (आवश्यक) के लिए और दूसरा CSV के लिए (अतिरेक, मुझे लगता है कि यह आवश्यक था, लेकिन IISExpress एप्लीकेशन .onfig पहले से ही CSV था)। इसलिए मुझे यह त्रुटि तब मिली Cannot add duplicate collection entry of type 'mimeMap' with unique key attribute 'fileExtension' set to '.csv' जब मैंने किसी भी स्थैतिक का उपयोग करने की कोशिश की: एक बार जब मैंने डुप्लिकेट को हटा दिया, तो कोई समस्या नहीं।
लाल मटर

1
यह स्थानीय स्तर पर चलने पर समस्या को ठीक कर देगा, लेकिन लाइव पुश करने पर ध्यान दें। यदि माइमपाइप पहले से ही आईआईएस में विश्व स्तर पर कॉन्फ़िगर किया गया है, तो आपको 500 त्रुटियां मिलेंगी। बस इस मामले में अपने web.config से इस टुकड़े को हटा दें।
इवान

20

समाधान आपको MIME प्रकारों में json फ़ाइल एक्सटेंशन प्रकार जोड़ने की आवश्यकता है

विधि 1

IIS पर जाएं, अपना एप्लिकेशन चुनें और MIME प्रकार खोजें

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

Add from Right पैनल पर क्लिक करें

फ़ाइल नाम एक्सटेंशन = .json

MIME प्रकार = अनुप्रयोग / json

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

MIME प्रकार में .json फ़ाइल प्रकार जोड़ने के बाद , IIS को पुनरारंभ करें और json फ़ाइल तक पहुँचने का प्रयास करें


विधि 2

उस एप्लीकेशन के web.config पर जाएं और उसमें यह लाइनें जोड़ें

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

15

जब mimetype के लिए समर्थन जोड़ना (जैसा कि @ProVega द्वारा सुझाया गया है) तो इसे जोड़ने से पहले टाइप को हटाने के लिए भी सबसे अच्छा अभ्यास है - यह अप्रत्याशित त्रुटियों को रोकने के लिए है जब सर्वर के लिए जहां पहले से मौजूद प्रकार का समर्थन है, उदाहरण के लिए:

<staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

जब आप केवल mimeMap जोड़ते हैं, तो कभी-कभी यह आपकी सीएसएस शैलियों को हटा देता है, इसलिए, सही तरीके से इसे पहले हटा दिया जाता है, बहुत धन्यवाद
sgrysoft

IIS7 फ़ाइल में कॉन्फ़िगर करने के लिए पथ C:\Windows\System32\inetsrv\config: applicationHost.config
OO

5

बस यह समस्या थी, लेकिन IIS एक्सप्रेस के लिए कॉन्फिग ढूंढना था ताकि मैं माइम प्रकार जोड़ सकूं। मेरे लिए, यह उस समय स्थित था C:\Users\<username>\Documents\IISExpress\config\applicationhost.configऔर मैं वहां सही "माइम मैप" में जोड़ने में सक्षम था।


यह हो सकता है कि यह मेरे लिए IIS एक्सप्रेस के माध्यम से काम क्यों नहीं कर रहा है। दुर्भाग्य से यह कुछ ऐसा नहीं है जिसे मैं हर देव मशीन पर कॉन्फ़िगर करना चाहता हूं, इसलिए ऐसा लगता है कि मैं js config फाइल के लिए .js एक्सटेंशन के साथ चिपके रहने की सलाह दूंगा।
15

आप इसे Web.Config में भी कर सकते हैं - इस उत्तर को देखें stackoverflow.com/a/19517275/643761
Simcha Khabinsky

@SimchaKhabinsky मेरे लिए web.config पर्याप्त नहीं था।
जीन-बर्नार्ड पेलरिन

3
यदि web.config पर्याप्त नहीं है, तो आपको <mimeMap>नोड से पहले इस लाइन को जोड़ने की आवश्यकता हो सकती है <remove fileExtension=".json" />:। आपको Applicationhost.config (या machine.config) को नहीं छूना चाहिए। कहा जा रहा है, यदि आप अक्सर नई साइट बनाते हैं तो उन फ़ाइलों को संशोधित करना उपयोगी हो सकता है और प्रत्येक साइट के लिए web.config को संशोधित करना नहीं चाहिए। यह देव वातावरण के लिए काम कर सकता है, लेकिन अक्सर आप उत्पादन के वातावरण में मशीन को छूने में सक्षम नहीं होते हैं, इसलिए मैं अभी भी web.config में बदलाव करने की सलाह दूंगा।
gilly3

1
धन्यवाद @ gilly3 - removeमेरे लिए कुंजी थी
harriyott

0
  1. C: \ Users \ username \ Documents \ IISExpress \ config पर नेविगेट करें
  2. Visual Studio या अपने पसंदीदा पाठ-संपादक के साथ Applicationhost.config खोलें।
  3. MimeMap शब्द के लिए खोजें, आपको उन्हें बहुत सारे मिल जाने चाहिए।
  4. सूची के शीर्ष पर निम्न पंक्ति जोड़ें:।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.