SVG और विज़ुअल स्टूडियो के साथ वेब परीक्षण के लिए IIS को कैसे कॉन्फ़िगर करें?


14

मान लें कि मेरे पास svg छवि के साथ एक सरल वेब पेज है:

<img src="foobar.svg" alt="not working" />

अगर मैं इस पृष्ठ को स्थैतिक html पृष्ठ के रूप में बनाता हूं और इसे सीधे svg प्रदर्शित करता हूं। यदि मैं इस svg का पता टाइप करता हूं - तो यह प्रदर्शित होता है।

लेकिन जब मैं इसे .aspx पेज के रूप में बनाता हूं और इसे विज़ुअल स्टूडियो से गतिशील रूप से लॉन्च करता हूं तो मुझे altटेक्स्ट मिलता है। अगर मैं इस svg का पता टाइप करता हूं (लोकलहोस्ट से, लोकल फाइल के रूप में नहीं) - ब्राउजर डिस्प्ले के बजाय इसे डाउनलोड करने की कोशिश करता है।

मैं पहले से ही IIS में माइम प्रकार को परिभाषित करता हूं (पूरे सर्वर के लिए - "छवि / svg + xml") और IIS को पुनरारंभ करें। पहले जैसा ही प्रभाव।

प्रश्न: मुझे और क्या करना चाहिए?

अपडेट करें

वायरशर्क काम नहीं करेगा (यह प्रलेखन में है), मैंने रॉकैप की भी कोशिश की, लेकिन यह मेरे कनेक्शन (विषम) का पता नहीं लगा सकता है, सौभाग्य से फिडलर ने काम किया:

ग्राहक से:

GET http://127.0.0.1:1731/svg/document_edit.svg HTTP/1.1
Host: 127.0.0.1:1731
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

सर्वर से उत्तर:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 16 Feb 2012 11:14:38 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: application/octet-stream
Content-Length: 87924
Connection: Close

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:

*** FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation. ***

रिकॉर्ड के लिए, यहां उपयोगी क्यू एंड ए फ़िडलर के लिए है: /programming/826134/how-to-display-localhost-traffic-in-fiddler-ORE-debugging-an-asp-net-applicati


लगता है कि आपको SO पर इसके लिए बेहतर उत्तर मिल सकते हैं। संक्षेप में, मान लें कि ASPX पहले से ही काम कर रहा है, आपको ब्राउज़र के लिए ASPX पृष्ठ से MIME प्रकार के रूप में SVG का उत्सर्जन करना होगा, यह विश्वास करने के लिए कि यह SVG फ़ाइल है। आप संभवतः, पृष्ठ से SVG को गतिशील रूप से उत्सर्जित करने का प्रयास कर रहे हैं? यदि ऐसा है, तो AFAIK यदि यह एक पृष्ठ के रूप में काम करता है, तो यह IMG प्रविष्टि में काम करेगा।
ट्रिस्टन

@TristanK, aspx "SVG को MIME प्रकार" के रूप में नहीं उत्सर्जित कर रहा है, यह बस <img src...ऊपर दिखाए गए अनुसार मौजूद है, aspx "html" का पूर्ण HTML पृष्ठ पर अनुवाद किया गया है, लेकिन संपूर्ण सामग्री (html, और फिर svg) को IIS से किया जाता है।
ग्रीनल्डमैन

मुझे अभी भी समझ नहीं आ रहा है कि आप क्या वर्णन कर रहे हैं, लेकिन मुझे लगता है कि यह एक विकास प्रश्न है, इसलिए StackOverflow पर पूछा जाना बेहतर होगा।
ट्रिस्टनके

2
फ़िडलर की एक प्रति को पकड़ो, फिर दो अलग-अलग अनुरोधों को ट्रेस करें। यह आपको कुछ सुराग दे सकता है कि क्यों छवि के लिए एक सीधा अनुरोध इनमें से प्रत्येक मामले में अलग तरह से व्यवहार कर रहा है। सुराग सबसे अधिक संभावना है हेडर में वापस आ जाएगा। इस डेटा के बिना हम सब कर सकते हैं, लेकिन अनुमान लगा सकते हैं कि आपका सर्वर क्या प्रतिक्रिया दे रहा है।
केव

@macias केव ने कहा, आपको ट्रैफ़िक का पता लगाने की आवश्यकता है। Fiddler या सादे पुराने Wireshark इसे लेने में सक्षम होना चाहिए।
क्रिस एस

जवाबों:


14

आपके फ़िडलर ट्रेस से यह प्रतीत होता है कि आप बिल्ट-इन विज़ुअल स्टूडियो वेब सर्वर का उपयोग करके अपने पृष्ठों की सेवा कर रहे हैं:

Server: ASP.NET Development Server/10.0.0.0

यदि इसे IIS7 द्वारा परोसा जा रहा था तो हम देखेंगे:

Server: Microsoft-IIS/7.5

अंतर्निहित विज़ुअल स्टूडियो वेब सर्वर में केवल सीमित प्रकार के माइम-प्रकार होते हैं, जिनकी वह सेवा कर सकते हैं और आपके पास IIS7 के लिए निर्धारित माइम प्रकारों का कोई ज्ञान नहीं होता है। मैंने कुछ समय पहले स्टैक ओवरफ्लो पर इसी तरह की समस्या का जवाब लिखा था:

ASP.NET डेवलपमेंट सर्वर का उपयोग करके MIME प्रकार सेट करना

अंतर्निहित सर्वर आपकी .svgफ़ाइल की सेवा कर रहा है :

Content-Type: application/octet-stream

शायद यही कारण है कि ब्राउज़र डाउनलोड करने का संकेत दे रहा है।

विज़ुअल स्टूडियो जांच में कि आप अपनी साइट की परियोजना संपत्तियों को खोलकर और खड़ी टैब सूची से "वेब" टैब का चयन करके IIS एक्सप्रेस का उपयोग कर रहे हैं:

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

यदि आपके पास IIS 7.5 एक्सप्रेस स्थापित नहीं है, तो आप इसे यहाँ से प्राप्त कर सकते हैं:

http://www.microsoft.com/download/en/details.aspx?id=1038

पूर्ण लाभ लेने के लिए आपको Visual Studio 2010 सर्विस पैक 1 की आवश्यकता होगी:

http://support.microsoft.com/kb/983509

IIS एक्सप्रेस समर्थन

Visual Studio 2010 SP1 आपको इंटरनेट सूचना सेवाओं (IIS) 7.5 एक्सप्रेस को वेबसाइट और वेब अनुप्रयोग परियोजनाओं के लिए स्थानीय होस्टिंग सर्वर के रूप में उपयोग करने में सक्षम बनाता है।

नोट IIS 7.5 एक्सप्रेस SP1 में शामिल नहीं है, और आपको इसे अलग से डाउनलोड करना होगा। अधिक जानकारी के लिए, निम्नलिखित ब्लॉग पर जाएँ: http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx

जब आप ऐसा कर लें कि आप .svgअपने एप्लिकेशन की web.configफ़ाइल में माइम प्रकार जोड़ सकते हैं :

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>

बहुत धन्यवाद। मेरे मामले में यह कुछ अलग तरह से चला गया - IIS में स्विच करने के लिए (मेरे पास ISS है, ISSExpress नहीं) मुझे VS को एडमिन मोड में चलाना था, उसके बाद यह सब था - मैंने web.config में svg को परिभाषित नहीं किया क्योंकि मैंने परिभाषित किया था यह पहले से ही IIS में है।
ग्रीनोल्डमैन

2

जैसा कि ऊपर उल्लेख किया गया है, कैसिनी इन सेटिंग्स को web.config में नजरअंदाज करती है, इसलिए किसी को IIS एक्सप्रेस (वीएस परियोजना सेटिंग्स पर) /programming/5924647/setting-mime-types-use-the-asp- का उपयोग करना पड़ता है नेट-विकास-सर्वर

व्यवस्थापक UI का उपयोग करके MIME प्रकारों को कॉन्फ़िगर करने या IIS या IIS एक्सप्रेस के लिए web.config का उपयोग करने के बारे में अधिक जानकारी प्राप्त करने के लिए देखें: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for- the -website-or-Global / और http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /


क्या आप इसे एक नया सवाल कह रहे हैं, या बयानबाजी? यदि पूर्व, कृपया पूर्ण विवरण के साथ एक नया प्रश्न पूछें । यदि उत्तरार्द्ध, यह संभवतः एक टिप्पणी होनी चाहिए - क्योंकि यह खड़ा है यह एक बहुत ही खराब उत्तर है ( यहां देखें क्यों )
voretaq7

बेहतर लिंक के साथ संशोधित
जॉर्ज बीरबिलिस

बहुत बेहतर :-)
voretaq7

2

मैंने केव उत्तर का उपयोग किया है:

  1. IIS 8.0 एक्सप्रेस को वेब प्लेटफ़ॉर्म इंस्टॉलर से इंस्टॉल करना
  2. IIS एक्सप्रेस का उपयोग करने के लिए प्रोजेक्ट के गुणों को बदलना और इसके लिए वर्चुअल निर्देशिका बनाना
  3. Web.config के विन्यास में जोड़ना → system.webServer
<staticContent>
    <remove fileExtension=".svg" />
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>

2

इसके लिए मेरा काम मेरे स्थानीय httphandler को बनाना था जो svg के लिए सामग्री-प्रकार से आगे निकल गया।

public class SvgHandler : IHttpHandler
{

    public bool IsReusable
    {
        get { return false; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/svg+xml";
        context.Response.BinaryWrite(File.ReadAllBytes(context.Request.PhysicalPath));
        context.Response.End();
    }
}

और web.config में मैंने जोड़ा:

<httpHandlers>
  <add verb="*" path="*.svg" type="SvgHandler" />
</httpHandlers>

इस समाधान के साथ आपको IIS एक्सप्रेस का उपयोग करने की आवश्यकता नहीं है, आप केवल दृश्य स्टूडियो 2010 में नियमित विकास सर्वर का उपयोग कर सकते हैं


1
यह बहुत ही स्थूल है कि इस तरह की बात करनी है ...
जारोद मोसेन

1

मैं IIS7 चला रहा हूं, और IIS में सर्वर पर राइट-क्लिक करके और गुणों को चुनकर इसे ठीक करने में सक्षम था। फिर मैंने MIME प्रकार ... बटन पर क्लिक किया। मैंने फिर न्यू पर क्लिक किया। एक्सटेंशन के लिए मैंने .svg टाइप किया। MIME प्रकार के लिए मैंने इमेज / svg + xml टाइप किया। फिर मैंने बचा लिया है और कमांड प्रॉम्प्ट से एक आईरिसर्सेट किया है। बढ़िया काम किया।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.