2010-01-25 9 views
5

के साथ फ़ाइल डाउनलोड नहीं करेगा। मेरे पास स्थानीय मशीन (विंडोज 7 x64, IE8, .NET 3.5, C#) पर चल रही एक .NET सेवा है जो ब्राउज़र पर एक फ़ाइल लौटाती है उपयोगकर्ता कार्रवाई के जवाब में। फ़ायरफ़ॉक्स या क्रोम का उपयोग करके, फ़ाइल ठीक से डाउनलोड की जाती है और हमारा एप्लिकेशन एक कस्टम माइम प्रकार के माध्यम से लॉन्च किया जाता है और सब ठीक है।IE8 एक कस्टम माइम/प्रकार के साथ एक फ़ाइल को यूएसी सक्षम

हालांकि, आईई 8 के साथ, मुझे एक संवाद मिलता है "फ़ाइल डाउनलोड करने में असमर्थ। इस इंटरनेट साइट को खोलने में असमर्थ। अनुरोधित साइट या तो अनुपलब्ध है या नहीं मिल सकती है। बाद में पुनः प्रयास करें"।

फिडलर का उपयोग करके, मैंने सत्यापित किया कि आईई को सेवा से पेलोड प्राप्त होता है।

यदि मैं यूएसी बंद करता हूं, तो IE फ़ाइल डाउनलोड करता है और संबंधित एप्लिकेशन लॉन्च करता है।

यूएसी बंद करना एक व्यवहार्य समाधान नहीं है, क्योंकि हमारे ग्राहक इसे सक्षम कर देंगे।

यूएसी सक्षम के साथ संबंधित एप्लिकेशन लॉन्च करने के लिए मैं IE8 कैसे प्राप्त कर सकता हूं?

संपादित करें:

वर्णित here के रूप में एक कार्यक्रम संबंधी आईडी के साथ माइम प्रकार reregistering के बाद, मैं IE खोलने दिखाने के "ओपन या सहेजें" दूसरा समय लिंक पता पट्टी से अनुरोध किया जाता है के लिए संवाद करने के लिए मिल सकता है। यह पहली बार क्यों काम नहीं करता है?

+0

क्या कस्टम एमआईएम प्रकार भी आवश्यक है? 'आवेदन/ऑक्टेट-स्ट्रीम' पर्याप्त नहीं होगा? – Joey

+0

अच्छा सवाल। जहां तक ​​मुझे पता है, यह है कि आईई कैसे निर्धारित करता है कि एप्लिकेशन को लॉन्च करने के लिए किस प्रोग्राम का उपयोग करना है। यह यहां एक बंद-लूप है, यह हमारी डेटाफाइल और हमारे दर्शक है। हम और कैसे करेंगे? –

+0

यदि आप जेनेरिक माइम प्रकार जैसे एप्लिकेशन/ऑक्टेट-स्ट्रीम और एक कस्टम फ़ाइल एक्सटेंशन का उपयोग करते हैं जिसे आपने अपने दर्शक के साथ पंजीकृत किया है (आप दर्शक के इंस्टॉलर हैं), तो क्या IE (और बाकी सब कुछ) इसे प्रदर्शित करेगा? –

उत्तर

5

मैं आज इस समस्या को हल करने में सक्षम था। यह पता चला है कि कोडबेहिंड HttpCacheability.NoCache की प्रतिक्रिया की CacheControl संपत्ति सेट कर रहा था। कोड की उस पंक्ति को हटाने से समस्या हल हो गई। फिक्स का दूसरा भाग सही ढंग से माइम प्रकार और फ़ाइल एक्सटेंशन को प्रोगॉग के साथ पंजीकृत कर रहा था।

मैंने केवल content-disposition: attachment; filename=xxx और स्ट्रिंग डेटा के बाइनरी लेखन के जवाब को तोड़ दिया। आईई ने ओपन या सेव डायलॉग बॉक्स को सही ढंग से प्रदर्शित किया, भले ही माइम स्नीफ ने फ़ाइल को टेक्स्ट/एचटीएमएल (जो वास्तव में टेक्स्ट/सादा होना चाहिए) के रूप में रिपोर्ट किया हो।

मैंने सामग्री प्रकार शीर्षलेख को वापस जोड़ा और पुनः चिपकाया, फिर नोस्निफ विकल्प और रीस्टेस्ट किया गया और अंत में कैश नियंत्रण। प्रत्येक परीक्षण के बीच में, मैंने यह सुनिश्चित करने के लिए वीएम को रीबूट किया कि यह एक प्राचीन परीक्षण वातावरण था (यानी, कैश किए गए या प्रीलोड किए गए कुछ भी नहीं)। केवल कैश नियंत्रण रेखा ने नकारात्मक फैशन में व्यवहार को प्रभावित किया।

1

From MSDN

इंटरनेट एक्सप्लोरर सामग्री प्रकार निर्दिष्ट जानता है और कोई सामग्री-विन्यास डेटा नहीं है, तो Internet Explorer फ़ाइल के पहले 200 बाइट्स स्कैनिंग करता है, तो यह निर्धारित करने के लिए एक "माइम सूंघ," प्रदर्शन फ़ाइल संरचना किसी ज्ञात एमआईएम प्रकार से मेल खाती है। एमआईएमई स्नीफिंग के बारे में अधिक जानकारी के लिए, इंटरनेट एक्सप्लोरर में एमआईएमई टाइप डिटेक्शन देखें। यदि एमआईएमई स्नीफ इंटरनेट एक्सप्लोरर के लिए ज्ञात एक एमआईएमई प्रकार का पता लगाता है, और फाइल पहले से ही माइमेफिल्टर द्वारा लोड नहीं की गई है, तो इंटरनेट एक्सप्लोरर फ़ाइल को स्थानीय ब्राउज़र कैश में रखने से पहले फ़ाइल एक्सटेंशन सेट करता है।

आखिरकार, यदि कोई सामग्री-प्रकार या सामग्री-विस्थापन डेटा नहीं है, और MIME स्निफ़ ज्ञात MIME प्रकार को पहचान नहीं पाता है, तो फ़ाइल एक्सटेंशन फ़ाइल को डाउनलोड करने के लिए उपयोग किए जाने वाले यूआरएल के समान एक्सटेंशन पर सेट होता है।

यदि फ़ाइल HTTP शीर्षलेख में "सामग्री-स्वभाव = अनुलग्नक" के रूप में चिह्नित है, तो इंटरनेट एक्सप्लोरर फ़ाइल नाम को यूआरएल से फाइनल के रूप में मानता है और इसे कैश में रखने से पहले इसका नाम नहीं बदलता है।

सामग्री-स्वभाव = लगाव कि समाधान है?!?

/Erling Damsgaard DNS-आईटी ApS

+0

नहीं, ऐसा नहीं है, हालांकि ऐसा लगता है कि यह होना चाहिए। –

1

हमारे पास www.Qiqqa.com की हमारी क्लिकऑन परिनियोजन में एम्बेडेड एक ही समस्या थी। मुझे संदेह है कि इसे "एमआईएमई टाइप स्नीफिंग" के साथ करना है जो आईई करता है जब इसे एप्लिकेशन/ऑक्टेट-स्ट्रीम मिलता है - मुझे लगता है कि उपयोगकर्ता को दुर्भावनापूर्ण सामान से बचाने के लिए।

वैसे भी, समस्या को हल करने के लिए, हमने अपनी .deploy फ़ाइलों के माइम प्रकार को टेक्स्ट/सादा होने के लिए बदल दिया - स्पष्ट रूप से आदर्श नहीं है, लेकिन साथ ही, मुझे एक परिदृश्य नहीं पता है जहां हमारे पास एक हो सकता है। हमारे सर्वर पर फ़ाइल को तैनात करें कि उपयोगकर्ता क्लिकऑन के बाहर ब्राउज़ करेगा।

0

मेरे लिए इस समस्या का समाधान

 
Response.ContentType = "application/vnd.ms-excel"; 

बदल रहा था

 
Response.ContentType = "text/csv"; 
1

करने के लिए सुनिश्चित "नहीं-स्टोर" से पहले "नहीं-कैश" अपने शीर्षक में दिखाई देती बनाने के लिए की आवश्यकता है। यह पोस्ट देखें: http://blogs.msdn.com/b/ieinternals/archive/2009/10/03/internet-explorer-cannot-download-over-https-when-no-cache.aspx

+0

पहली बार यह एक हिट और परीक्षण प्रतीत होता है; लेकिन यह मेरे लिए काम किया। यह भी देखें [एमएसडीएन ब्लॉग पर प्रस्तावित वही समाधान] http://blogs.msdn.com/b/ieinternals/archive/2009/10/03/internet-explorer-cannot-download-over-https-when-no-cache। aspx? PageIndex = 2 –

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