2009-12-08 13 views
5

के साथ ब्लॉक किया जा रहा है मेरे पास एक पृष्ठ है जो डाउनलोड के लिए एक गतिशील फ़ाइल उत्पन्न करता है, और इसे Response.BinaryWrite का उपयोग कर क्लाइंट को भेजता है।ASP.NET Response.BinaryWrite फ़ाइल डाउनलोड एसएसएल

सबकुछ ठीक काम करता प्रतीत होता है, सिवाय इसके कि जब हम इसे एसएसएल के साथ एक परीक्षण सर्वर में ले जाते हैं। डाउनलोड एक नई विंडो में होता है, और जो मैं देख रहा हूं (आईई 7/8 में लेकिन क्रोम या एफएफ नहीं) टैब खुलता है, और बंद हो जाता है, लेकिन कोई फ़ाइल संवाद नहीं दिखाया जाता है।

यहाँ पूरा हैडर लिखने है:

Response.Clear() 
     Response.Buffer = True 
     Response.ContentType = "application/octet-stream" 
     Response.AddHeader("Content-Length", abytFileData.Length.ToString) 
     Response.AddHeader("cache-control", "private") 
     Response.AddHeader("Expires", "0") 
     Response.AddHeader("Pragma", "cache") 
     Response.AddHeader("content-disposition", "attachment; filename=""" & pMsg!pstrFileName & """") 
     Response.AddHeader("Accept-Ranges", "none") 
     Response.BinaryWrite(abytFileData) 
     Response.Flush() 
     Response.End() 

मुझे यकीन है कि के लिए सोचा गया कि मेरी समस्या क्या here उल्लेख किया गया था,

लेकिन अपने कैश-नियंत्रण heade सही है। कोई विचार?

+0

शायद डुप्लिकेट? http://stackoverflow.com/questions/419868/file-download-dialog-ie7- डिस्प्लेयर –

+0

उस पोस्ट को नहीं देखा, लेकिन मैंने जो लिंक प्रदान किया है वह समान है। अपने प्रश्न में उन्होंने कैश-कंट्रोल हेडर को कुछ भी नहीं बताया, जो उसकी समस्या पैदा कर रहा था। मेरे में मैं कैश-नियंत्रण को निजी के रूप में निर्दिष्ट कर रहा हूं, जो काम करना चाहिए। – Gaidin

+0

आपका समय समाप्त हो जाता है: 0 या प्रगमा अपराधी हो सकता है। आपको उन्हें हटाने पर विचार करना चाहिए। – EricLaw

उत्तर

2

मैं एक ही समस्या का सामना किया है और जांच के कुछ डिग्री के बाद मैं सुझाव है कि डाउनलोड आईई सुरक्षा सेटिंग द्वारा अवरुद्ध किया जा रहा है codeproject पर एक लेख मिला। यदि आप टूल्स-> इंटरनेट विकल्प-> सुरक्षा टैब पर जाते हैं और जो ज़ोन आप एक्सेस कर रहे हैं उसके लिए डाउनलोड विकल्प देखें, तो आपको सक्षम होने के लिए "फ़ाइल डाउनलोड के लिए स्वचालित संकेत" को बदलने की आवश्यकता है। इसके लिए "इंटरनेट" जोन डिफ़ॉल्ट सेटिंग अक्षम है। यहां दिए गए आलेख का लिंक यहां दिया गया है: http://www.codeproject.com/KB/aspnet/SecureFileDownload.aspx

+0

हाँ, यह वही निष्कर्ष था जो मैं भी आया था। इसमें बहुत उपयोगी नहीं है कि एसएसएल कनेक्शन के लिए सुरक्षा सेटिंग को डाउनलोड प्रॉम्प्ट को मजबूर नहीं किया गया है, और हमारे उपयोगकर्ताओं में से प्रत्येक को अपनी सुरक्षा सेटिंग्स बदलने के लिए वास्तव में एक विकल्प नहीं है। जो मैंने समाप्त किया वह एक अलग खिड़की में हमारे डाउनलोड करने की बजाय था, मैंने इसे आईफ्रेम में किया, इसलिए आईई सुरक्षा ड्रॉप डाउन चेतावनी दिखाई दे रही थी। – Gaidin

3

देखें यहाँ का जवाब:

C# BinaryWrite over SSL

अनिवार्य रूप से, बदल देते हैं:

Response.Clear(); 
साथ

...

Response.ClearContent(); 
Response.ClearHeaders(); 
+0

क्षमा करें मैंने यह उल्लेख करने की उपेक्षा की कि मैंने भी कोशिश की है। कोई भाग्य नहीं। – Gaidin

1

आप को बदलने या हटाने के अपने समाप्त हो रहा है या Pragma हेडर की कोशिश की है ? निम्नलिखित कोड मेरे लिए काम करता है जब SSL पर पीडीएफ़ स्ट्रीमिंग:

Response.Buffer = True 
Response.ClearContent() 
Response.ClearHeaders() 
Response.AddHeader("Cache-Control", "max-age=3") 
Response.AddHeader("Pragma", "public") 
Response.ContentType = "application/pdf" 
Response.AddHeader("Content-Disposition", "attachment; filename=file.pdf") 
Response.AddHeader("Content-Length", mem_stream.Length.ToString) 
Response.BinaryWrite(mem_stream.ToArray()) 
Response.Flush() 
Response.End() 
संबंधित मुद्दे