2010-07-12 22 views
18

आमतौर पर %SystemDrive%\inetpub\wwwroot जैसा पथ कैसे प्राप्त करें?स्थानीय आईआईएस सर्वर पर वेबसाइट का भौतिक पथ कैसे प्राप्त करें? (डेस्कटॉप ऐप से)

मुझे लगता है कि यह Microsoft.Web.Administration.ServerManager कक्षा के साथ कुछ करने के लिए है, लेकिन मुझे कोई रास्ता नहीं मिला।

अद्यतन: मैं स्टैंडअलोन ऐप से पथ प्राप्त करने का प्रयास कर रहा हूं। एक एएसपी.नेट वेब ऐप नहीं।

+0

क्या आप इसे एप्लिकेशन के भीतर से करने की कोशिश कर रहे हैं - यानी, एएसपी.नेट - या किसी प्रकार का स्टैंडअलोन एप्लिकेशन? – LukeH

+0

एक स्टैंडअलोन ऐप से – Agzam

+0

बेहतर है कि आप सभी जानकारी के साथ सही तरीके से प्रश्न पूछें और अपने अपडेट में बोल्ड चिह्नित करें जैसा कि मैंने अपने उत्तर में किया है –

उत्तर

37

स्वतंत्र अनुप्रयोग से एक वेबसाइट के भौतिक पथ की खोज करने के लिए आप निम्न कर सकते हैं:

// If IIS7 
// Add reference to Microsoft.Web.Administration in 
// C:\windows\system32\inetsrv 

using Microsoft.Web.Administration; 
... 

int iisNumber = 2; 

using(ServerManager serverManager = new ServerManager()) 
{ 
    var site = serverManager.Sites.Where(s => s.Id == iisNumber).Single(); 
    var applicationRoot = 
      site.Applications.Where(a => a.Path == "/").Single(); 
    var virtualRoot = 
      applicationRoot.VirtualDirectories.Where(v => v.Path == "/").Single(); 
    Console.WriteLine(virtualRoot.PhysicalPath); 
} 

आप आईआईएस 6 (या IIS7 के लिए IIS6 व्यवस्थापक संगतता परत)

// If IIS6 
// Add reference to System.DirectoryServices on .NET add ref tab 

using System.DirectoryServices; 
... 

int iisNumber = 2; 

string metabasePath = String.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber); 
using(DirectoryEntry de = new DirectoryEntry(metabasePath)) 
{ 
    Console.WriteLine(de.Properties["Path"].Value); 
} 
उपयोग कर रहे हैं

इन दोनों उदाहरणों से पता चलता है कि वेब साइट की रूट के पथ को कैसे खोजा जाए।

वर्चुअल निर्देशिका के पथ को खोजने के लिए आपको आवश्यकतानुसार पथ संशोधित करने की आवश्यकता है।

+0

धन्यवाद .. यह वही है जो मैं ढूंढ रहा था, मुझे लगता है ... – Agzam

+1

यदि आपका "ऐप" एसक्यूएल सीएलआर में चल रहा है, तो यह काम नहीं करेगा, न तो माइक्रोसॉफ्ट वेब ।शासन प्रबंध।डीएलएल और न ही निर्भरता की अंतहीन श्रृंखला का परीक्षण SQL सर्वर में किया गया है। क्या वेब एप्लिकेशन पथ खोजने के कुछ वैकल्पिक, अधिक बुनियादी तरीके हैं, या कुछ अन्य डीएलएल जो कम फीचर पैक हैं? – Triynko

+0

कोई कैसे मिलता है, माइक्रोसॉफ्ट। वेब। प्रशासन .. मेरे पास Win7 है और मेरे पास मेरी मशीन पर कहीं भी डीएलएल नहीं है। Microsoft.Web.Administration.dll। मुझे एक Microsoft.Web.Administration.Resource.dll मिला, लेकिन यह वही फ़ाइल नहीं है। – Switch

6

Server.MapPath

या

Request Object Paths Available

RequestObject संपत्ति

PhysicalApplicationPath -Returns स्थानीय फाइल सिस्टम इस एप्लिकेशन के लिए आभासी रूट के रास्ते। c: \ inetpub \ wwwroot \ वेबस्टोर

PhysicalPath -Returns वर्तमान स्क्रिप्ट या पथ के स्थानीय फाइल सिस्टम पथ। c: \ inetpub \ wwwroot \ वेबस्टोर \ व्यवस्थापक \ paths.aspx

अपडेट

विंडोज़ अनुप्रयोग से आईआईएस उपयोग करने के लिए इस लेख के माध्यम से जाना: Modification of IIS Metabase in C# (आईआईएस 6.0,5.0 के लिए)

+0

मैं वास्तव में एक स्टैंडअलोन wpf ऐप से पथ प्राप्त करने का प्रयास कर रहा हूं। एक वेब ऐप नहीं। क्या Microsoft.Web.Administration कक्षाओं का उपयोग करने के लिए कोई तरीका है? – Agzam

+0

यह बेहतर है कि आप सभी जानकारी के साथ सही तरीके से प्रश्न पूछें और अपने अपडेट में बोल्ड चिह्नित करें जैसा कि मैंने अपने उत्तर में किया था –

+1

माइक्रोसॉफ्ट। वेब। प्रशासन। सर्वर मैनेजर हालांकि एक उपहार देने वाला था? :) – Kev

0

Server.MapPath साझा होस्टिंग वातावरण में काम नहीं कर रहा है, इस मामले में आप HostingEnvironment.MapPath का उपयोग कर सकते हैं।

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