2015-08-06 7 views
9

मुझे अभी भी वही समस्या है जो पहले रिपोर्ट की गई थी और Microsoft Edge PDF inline issue के तहत उत्तर दिया गया था, भले ही मैं विन 10 के प्री-रिलीज संस्करण का उपयोग नहीं कर रहा हूं, लेकिन नवीनतम डाउनलोड हालांकि विंडोज सुधार।"माइक्रोसॉफ्ट एज पीडीएफ इनलाइन इश्यू" एक ही समस्या फिर से

मेरी विन 8.1 मशीन को विन 10 में अपग्रेड करने के बाद, और मेरे एएसपी.NET एप्लिकेशन का परीक्षण करने के बाद, मुझे इनलाइन पीडीएफ फाइलों को प्रदर्शित करने के साथ एक समस्या का सामना करना पड़ा।

यहाँ मेरी ASP.NET अनुप्रयोग में मेरी सी # कोड है:

नहीं खोल सके पीडीएफ :

Response.Clear(); 
Response.ClearHeaders(); 
Response.ClearContent(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition","inline;filename=some.pdf"); 
Response.BinaryWrite(pdfArray); 
Response.End(); 

सभी ब्राउज़रों पर ऊपर काम करता है, किनारे पर छोड़कर, जहां यह मुझे निम्न त्रुटि देता है कुछ इस पीडीएफ को खोलने से रोक रहा है।

मैं क्या गलत कर रहा हूं?

+0

ध्यान दें कि अटैचमेंट कार्यों के साथ इनलाइन को प्रतिस्थापित करना, यह सेव फ़ाइल प्रॉम्प्ट लाता है और फ़ाइल को ठीक से डाउनलोड करता है। हालांकि हमें ब्राउज़र विंडो में लोड करने की आवश्यकता है। – loowool

+0

मेरे पास आईई एज 20.10240.16384.0 के साथ विन 10 पर एक ही समस्या है! – powtac

उत्तर

11

Microsoft Connect पर मेरे कामकाज से कॉपी किया गया।

चेतावनी: यह एक पूर्ण हैक है और जब माइक्रोसॉफ्ट कभी भी इस मुद्दे को हल करता है तो तोड़ने का जोखिम चलाता है।

आप देखेंगे कि जब भी आप पीडीएफ देखते हैं तो एज दो अनुरोध जारी करता है। मेरे लिए, ऐसा लगता है कि ब्राउज़र प्रारंभिक अनुरोध भेज रहा है और फिर पीडीएफ दर्शक खोले जाने पर अपना अनुरोध जारी कर रहा है। आपको लगता है कि दूसरा अनुरोध में हेडर को देखें, तो आप एक अजीब DLNA हैडर नीचे आ रहा है, जो सिर्फ मीडिया स्ट्रीमिंग के लिए किया जाना चाहिए देखेंगे, लेकिन है कि मुझे मेरे वैकल्पिक हल की ओर जाता है ...

  1. जब अनुरोध आपके हैंडलर या पेज में प्राप्त होता है, जांचें कि क्या उपयोगकर्ता एजेंट स्ट्रिंग में "एज/12" है। यदि ऐसा नहीं होता है, तो सामान्य रूप से अपने पीडीएफ को वापस भेजें। यदि ऐसा होता है, तो चरण # 2 पर जाएं।

  2. जांचें कि HTTP शीर्षलेख "GetContentFeatures.DLNA.ORG" मौजूद है या नहीं। यदि ऐसा नहीं होता है, तो इसका मतलब है कि अनुरोध ब्राउज़र से आया था। बस "एप्लिकेशन/पीडीएफ" और एक खाली निकाय का एक सामग्री-प्रकार शीर्षलेख भेजें। यदि हेडर मौजूद है, तो अनुरोध पीडीएफ व्यूअर से आया था और आप सामान्य रूप से अपना पीडीएफ भेज सकते हैं।

असल में, हैंडलर एक HEAD अनुरोध के रूप में है कि पहली अनुरोध व्यवहार करता है और उसके बाद पूर्ण पीडीएफ के साथ प्रतिक्रिया करता है, तो हम पाते हैं कि अनुरोध PDF व्यूअर से आ रही है। जोखिम जो हम यहां चलाते हैं वह यह है कि यदि माइक्रोसॉफ्ट बाद में उस डीएलएनए हेडर को हटा देता है, तो एज पीडीएफ को सही तरीके से प्रस्तुत नहीं करेगा। उम्मीद है कि माइक्रोसॉफ्ट इस मुद्दे को अपने ब्राउज़र में ठीक करेगा और यह कामकाज आवश्यक नहीं होगा।

+0

मैं पुष्टि कर सकता हूं कि मैं दूसरे अनुरोध में यह 'GetContentFeatures.DLNA.ORG' भी देखता हूं। – powtac

+0

एज 38.14393.0.0 में, कोई दूसरा अनुरोध प्रतीत नहीं होता है, हालांकि डेवलपर टूल्स रिपोर्ट में अनुरोध के लिए "इस संसाधन के पास कोई प्रतिक्रिया पेलोड डेटा नहीं है", जब मुझे पता है कि वहां है, क्योंकि वही प्रक्रिया क्रोम में काम करती है । –

1

धन्यवाद डार्क हेलमेट, आपने मेरा दिन बचाया। मैंने जावा में समाधान लागू किया। यहां वह कोड है जो दूसरों की मदद कर सकता है।

String userAgent = request.getHeader("user-agent"); 
System.out.println(userAgent); 
if(userAgent.contains("Edge")){ 
    String dlnaHeader = request.getHeader("getcontentfeatures.dlna.org"); 
    System.out.println(dlnaHeader); 
    if(dlnaHeader == null){ 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     byte[] result = baos.toByteArray(); 
     response.setContentType("application/pdf"); 
     response.setHeader("Content-disposition","inline; "); 
     response.setContentLength(result.length);    
     ServletOutputStream sos = response.getOutputStream(); 
     sos.write(result); 
     return null; 
    } 
} 
0

धन्यवाद दोस्तों, मैं बस अपने वर्कअराउंड के आधार पर अपना वीबीएनईटी समाधान रखना चाहता हूं।

Response.Clear() 
Response.ClearHeaders() 
Response.ClearContent() 
Response.Buffer = True 
If Request.Headers.Item("User-Agent").Contains("Edge") _ 
AndAlso IsNothing(Request.Headers.Item("GetContentFeatures.DLNA.ORG")) Then 
    'Edge? Send empty output if special header not exist 
    Response.ContentType = "application/pdf" 
    Dim bTemp As Byte() 
    Response.BinaryWrite(bTemp) 'Empty output 
    Response.Flush() 
    Response.SuppressContent = True 
    HttpContext.Current.ApplicationInstance.CompleteRequest() 
End If 
'Normal process: 
Response.ContentType = "application/pdf" 
Response.BinaryWrite(pdfArray) 
Response.Flush() 
Response.SuppressContent = True 
HttpContext.Current.ApplicationInstance.CompleteRequest() 
0

एज 16.1629 9 (विंडोज फॉल निर्माता अपडेट) के साथ यहां परिवर्तन किए गए थे। हमने इस मुद्दे में वर्णित कामकाज किया और यह "अच्छा" काम किया। लेकिन अब एज के नए संस्करण (16.1629 9) के साथ यह अब काम नहीं कर रहा है और ऐसा होता है कि पीडीएफ दूषित हो जाते हैं (0 बाइट बड़े होते हैं)। अगर आप कहीं भी इस कामकाज को लागू करते हैं तो सावधानी बरतें। आप जो भी ख्याल रखते हैं वह यह है कि एज पहले जैसा दो अनुरोध कर रहा है।

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