2011-01-05 15 views
10

द्वारा उत्पन्न छवियों को प्रदर्शित नहीं करता है मूल रूप से मेरे पास एक ऐसी वेबसाइट है जो कुछ दस्तावेज़ों (मुख्य रूप से कार्यालय) के HTML पूर्वावलोकन प्रस्तुत करती है। जिसके परिणामस्वरूप HTML टुकड़ा पेज एक ही वेब साइट द्वारा दिया में शामिल है, फिर भी छवियों HTTP हैंडलर द्वारा एक अन्य साइट से लिंक का अनुसरण के साथ वापस आ रहे हैं: किसी कारण सेक्रोम ब्राउज़र HTTP हैंडलर

<img width="50" height="50" src="http://portal/Service/GetFile.asxh?id=123&inline=true"> 

क्रोम को छोड़कर (जैसे IE6/7 सभी ब्राउज़रों/8, फ़ायरफ़ॉक्स, ओपेरा, सफारी) सबकुछ ठीक दिखाएं, हालांकि इन छवियों के लिए क्रोम "टूटी हुई छवि" आइकन दिखाता है। अगर मैं "नए टैब में छवि खोलें" चुनता हूं तो छवि ठीक दिखाई देगी।

संपादित करें मैंने सोचा कि मैंने इस मुद्दे को हल किया है, लेकिन स्पष्ट रूप से फिडलर के साथ यह ठीक काम करता है।

मेरे पास संदर्भ था। रेस्पॉन्स = "utf-8" कोड में छोड़ा गया था, लेकिन इसे हटाने में कोई फर्क नहीं पड़ता था।

हेडर:

HTTP/1.1 200 OK 
Date: Wed, 05 Jan 2011 14:26:57 GMT 
Server: Microsoft-IIS/6.0 
MicrosoftOfficeWebServer: 5.0_Pub 
X-Powered-By: ASP.NET 
X-AspNet-Version: 4.0.30319 
Transfer-Encoding: chunked 
Cache-Control: no-cache 
Pragma: no-cache 
Expires: -1 
Content-Type: image/jpeg 

कोड:

    context.Response.ContentType = file.ContentType; 

        context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 

        byte[] buff = new byte[BuffSize]; 
        using (var stream = repository.GetFileContentsAsStream(file.ContentId)) 
        { 
         int bytesRead; 
         do 
         { 
          bytesRead = stream.Read(buff, 0, BuffSize); 
          if (bytesRead > 0) 
          { 
           context.Response.OutputStream.Write(buff, 0, bytesRead); 
          } 
         } while (bytesRead > 0); 
        } 

        context.Response.Flush(); 
        context.Response.Close(); 
+1

क्या आपके हैंडलर ने सही सामग्री-प्रकार सेट किया है? –

+1

प्रतिक्रिया में आपका हैंडलर कौन सा शीर्षलेख भेज रहा है? –

+0

क्या आप बिल्कुल सकारात्मक हैं आपकी सेवा सही शीर्षलेख उत्पन्न कर रही है? मुझे पहले भी इसी तरह की समस्याएं थीं और यह हमेशा हेडर या स्ट्रीम के साथ एक मुद्दा रहा है, कुछ ब्राउज़र कुछ चीजों को माफ कर देते हैं जो दूसरों को नहीं करते हैं। और मुझे लगता है कि आप "एशक्स" और "asxh" नहीं हैं :) –

उत्तर

5

मैं यकीन है कि क्रोम की लंबाई की आवश्यकता है छवियों के लिए स्थापित किया जाना हूँ, इसलिए जब से निपटने आपकी प्रतिक्रिया के लिए सामग्री-लंबाई हेडर जोड़ने का प्रयास करें छवि।

+0

नहीं, मेरे पास बिल्कुल वही सिस्टम है और मैं सामग्री की लंबाई भी नहीं भेजता, फिर भी यह अच्छी तरह से काम करता है। –

+0

वैसे मैं डेटाबेस से छवियों को पढ़ता हूं। शायद ओवरहेड क्रोम को छोड़ने के कारण पर्याप्त देरी जोड़ता है। वैसे भी, सामग्री-लंबाई जोड़ना इस समस्या को ठीक करता है। – Arunas

2

आप इस जोड़ना चाहिए:

Response.AddHeader("Content-Disposition", "inline;Filename=\"Picture.gif\""); 
Response.AddHeader("Content-Length", filesize.ToString()); 
4

यह context.Response.Close है(); क्रोम इसे पसंद नहीं करता है। उस रेखा से छुटकारा पाएं और सब अच्छा होगा। मैंने महीनों के लिए इसके साथ लड़ा। कोशिश कर के बाद

+0

मुझे लगता है कि आप सही हैं। मुझे जेनेरिक पीडीएफ की सेवा करने वाले हैंडलर के साथ एक ही समस्या थी। यह बंद –

+0

को हटाने के बाद गायब हो गया, यहां सामग्री-लंबाई शीर्षलेख भी लागू किया गया लेकिन बंद() विधि को हटाकर इसे ठीक किया गया। – Daveloper

+0

मुझे समस्या थी और यह मेरा समाधान था। धन्यवाद ! – bcolin

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