2010-10-14 15 views
9

मैं प्रोग्रामिंग रूप से आईआईएस के एमआईएमई प्रकार कैसे पढ़ सकता हूं? जब मैं अपने ग्राहकों को डेटा स्ट्रीम करता हूं तो मैं उनका उपयोग करना चाहता हूं using WCFमैं एमआईएम प्रकार मैपिंग के लिए आईआईएस से कैसे पूछ सकता हूं?

किसी भी सुझाव, या एपीआई की सराहना की जाएगी

उत्तर

2

माइम व्यवस्था करने के लिए पंजीकृत प्रकार के अंतर्गत "HKEY_CLASSES_ROOT \ माइम \ डाटाबेस \ सामग्री प्रकार" रजिस्ट्री में परिभाषित कर रहे हैं।

क्या आप आईआईएस में परिभाषित किसी विशेष वेबसाइट के लिए माइम प्रकार ढूंढ रहे हैं?

12

मैं इस धारणा बना रही हूँ इस IIS7 केवल और आप सी # 3.0 या बाद का उपयोग कर रहे है:

using Microsoft.Web.Administration; 
.... 
using(ServerManager serverManager = new ServerManager()) 
{ 
    // If interested in global mimeMap: 
    var config = serverManager.GetApplicationHostConfiguration(); 

    // Use if interested in just a particular site's mimeMap: 
    // var config = serverManager.GetWebConfiguration("Default Web Site"); 

    var staticContent = config.GetSection("system.webServer/staticContent"); 
    var mimeMap = staticContent.GetCollection(); 

    // Print all mime types 
    foreach (var mimeType in mimeMap) 
    { 
    Console.WriteLine(String.Format("{0} = {1}", mimeType["fileExtension"], 
     mimeType["mimeType"])); 
    } 

    // Find a mime type based on file extension 
    var mt = mimeMap.Where(
     a => (string) a.Attributes["fileExtension"].Value == ".pdf" 
    ).FirstOrDefault(); 

    if (mt != null) 
    { 
    Console.WriteLine("Mime type for .pdf is: " + mt["mimeType"]); 
    } 
} 

आप c:\windows\system32\inetsrv में Microsoft.Web.Administration.dll को संदर्भित करने की जरूरत है।

आपके कोड को भी ऐसा करने में सक्षम होने के लिए व्यवस्थापकीय अधिकारों की आवश्यकता है।

+0

+1 awesomeness के लिए! धन्यवाद! – LamonteCristo

+0

मैं अंत में इसे लागू करने के लिए चारों ओर मिल गया और ऐसा लगता है कि मुझे 'C: \ Windows \ System32 \ inetsrv' में IUSR पहुंच प्रदान करने की आवश्यकता है। जो मैंने पढ़ा है उससे यह सिस्टम सुरक्षा को काफी कम कर सकता है। आपके क्या विचार हैं? – LamonteCristo

+0

@maker - मेरे उत्तर की अंतिम वाक्य देखें * "आपके कोड को भी ऐसा करने में सक्षम होने के लिए प्रशासक अधिकारों की आवश्यकता है।" *। आप सही हैं कि किसी साइट के अज्ञात उपयोगकर्ता खाते को उच्च विशेषाधिकार प्राप्त करने की अनुमति देना एक अच्छा विचार नहीं है। मैं एक अलग प्रक्रिया (विंडोज सेवा होस्टेड रिमोटिंग या डब्ल्यूसीएफ ऐप) में अत्यधिक विशेषाधिकार प्राप्त संचालन को सैंडबॉक्सिंग करके इसके आसपास काम करता हूं और नौकरी करने के लिए आवश्यक विशिष्ट कार्यक्षमता का पर्दाफाश करता हूं। – Kev

0

रजिस्ट्री पढ़ रहा है या config निर्देशिका पर सुरक्षा को कम करने के लिए एक विकल्प के रूप में, वहाँ ASP.Net 4.5 या अधिक प्रयोग तो HTML Agility Pack

+0

चेतावनी का एक शब्द HtmlAgilityPack 1.4.0.0 बस रजिस्ट्री कुंजी HKEY_CLASSES_ROOT का उपयोग करता है। तो आपको सर्वर पर पंजीकृत होने के लिए रजिस्ट्री और फ़ाइल प्रकार तक पहुंच की आवश्यकता होगी। यह ब्लॉग आलेख बहुत अच्छा है http://codelog.climens.net/2009/10/28/getting-mime-type-in-net-from-file-extension/ – keza

5

, आप System.Web.MimeMapping.GetMimeMapping उपयोग कर सकते हैं इस प्रकार के भीतर एक पहले से भरा माइम डेटाबेस है :

void Page_Init() 
{ 
    string[] extensions = new string[] 
    { 
     ".pdf", 
     ".xls", 
     ".xlsx", 
     ".ppt", 
     ".pptx", 
     ".mp3", 
     ".ogg", 
     ".svg", 
     ".pdf", 
     ".png", 
    }; 

    foreach (string extension in extensions) 
    { 
     string mimeType = MimeMapping.GetMimeMapping(extension); 
     Response.Write(String.Format("{0} => {1}<br />", 
       extension, 
       mimeType 
      )); 
    } 
} 

परिणाम:

.pdf => application/pdf 
.xls => application/vnd.ms-excel 
.xlsx => application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
.ppt => application/vnd.ms-powerpoint 
.pptx => application/vnd.openxmlformats-officedocument.presentationml.presentation 
.mp3 => audio/mpeg 
.ogg => video/ogg 
.svg => image/svg+xml 
.pdf => application/pdf 
.png => image/png 
+0

डुनो क्यों यह स्वीकार्य उत्तर नहीं है। अच्छा, क्या इसके लिए व्यवस्थापकीय अधिकारों की आवश्यकता है ..? –

+1

इसे व्यवस्थापक अधिकारों की आवश्यकता नहीं है। जब यह सवाल मूल रूप से पूछा गया था कि लाइब्रेरी फ़ंक्शन मौजूद नहीं था, इसलिए ओपी ने उस समय का सबसे अच्छा जवाब चुना। मैं हर समय नई विधि का उपयोग करता हूं और यह मेरे लिए बहुत अच्छा काम करता है। – dana

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

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