2009-05-31 10 views
31

मैं अपने वर्चुअल पथ को वर्तमान वर्चुअल पथ के बारे में कैसे जानता हूं? उदाहरण के लिए:मुझे एएसपी.NET एप्लिकेशन का पूरा वर्चुअल पथ कैसे प्राप्त हो सकता है

http://www.mysite.com/myApp 

या

http://www.mysite.com/myApp/mySubApp 

मैं HttpRequest के आवेदन पथ पता लेकिन यह केवल फ़ोल्डर नाम है कि अपने आवेदन वर्तमान में होस्ट की है देता है, लेकिन मैं कैसे प्रारंभिक भाग मिलता है?

उत्तर

71

पथ का डोमेन नाम हिस्सा वास्तव में एप्लिकेशन की संपत्ति नहीं है, लेकिन अनुरोध करने वाले URL पर निर्भर करता है। आप कई अलग-अलग होस्ट नामों से एक ही वेबसाइट तक पहुंचने में सक्षम हो सकते हैं। वर्तमान आवेदन की आभासी पथ के साथ-साथ, वर्तमान अनुरोध से संबद्ध डोमेन नाम पाने के लिए आपको कर सकता है:

Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath 

तकनीकी तौर पर, एक "आवेदन" एक वर्चुअल निर्देशिका IIS और Request.ApplicationPath रिटर्न में परिभाषित किया गया है ठीक है कि। आप जिसमें वर्तमान अनुरोध नियंत्रित किया जाता है फ़ोल्डर प्राप्त करना चाहते हैं, तो आप ऐसा कर सकते हैं:

VirtualPathUtility.GetDirectory(Request.Path) 

ASP.NET पता नहीं कैसे एक बड़ा आवेदन से अपने उप आवेदन भेद करने के लिए है अगर यह परिभाषित नहीं कर रहा है आईआईएस में वर्चुअल निर्देशिका के रूप में। आईआईएस में पंजीकरण किए बिना, यह सिर्फ एक ही ऐप के रूप में पूरी चीज को देखता है।

+2

टूट गया है और अगर आवेदन आईआईएस में वर्चुअल निर्देशिका है, लेकिन पेज हम अनुरोध कर रहे हैं कई फ़ोल्डर के अंदर है, लेकिन हम वर्चुअल निर्देशिका, लेकिन फ़ोल्डर नहीं सहित पथ चाहते हैं, कैसे यह करने के लिए ? – Krunal

+1

@ क्रुनल [HttpRuntime.AppDomainAppVirtualPath] (https://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath (v = vs.110) .aspx) या Request.AplicationPath – jproch

2

कोशिश इस (इसे करने की कोशिश नहीं की है)

public string GetVirtualPath(string physicalPath) 
{ 
string rootpath = Server.MapPath("~/"); 
physicalPath = physicalPath.Replace(rootpath, ""); 
physicalPath = physicalPath.Replace("\\", "/"); 
return "~/" + physicalPath; 
} 

Link 1

Link 2

1

पूरी तरह से इस सवाल का मुझे लगता है कि आप अपने वास्तव में क्या करने के लिए कोशिश कर रहा है क्या वर्णन करने के लिए की जरूरत है और क्या है जवाब देने के लिए अपना पथ मान "अज्ञात" बनाना

आमतौर पर जब मैं पाथ ढूंढने में समस्याएं चलाता हूं तो इस ब्लॉग पोस्ट को रिक स्ट्राल क्ली द्वारा मेरे लिए चीजें हैं: http://www.west-wind.com/weblog/posts/269.aspx

आपको जो चाहिए वह प्राप्त करने के लिए मिश्रण और मिलान करना पड़ सकता है।

+0

लिंक –

18
Request.Url 

यह कई अंक है कि आप का उपयोग करने के विचार हो सकता, नीचे छवि देखें शामिल हैं: नीचे कोड उद्देश्य का समाधान होगा

enter image description here

3

, हालांकि आप दो लोगों के लिए थोड़ा ट्यूनिंग क्या करना है परिदृश्य के प्रकार:

  1. अलग-अलग वेब एप्लिकेशन के रूप में होस्ट किया गया।
  2. वेब एप्लिकेशन के भीतर वर्चुअल एप्लिकेशन के रूप में होस्ट किया गया।

    HttpContext.Current.Request.Url.GetLeftPart (UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath;

6

.NET 4 में।5

VirtualPathUtility.ToAppRelative(path) 
संबंधित मुद्दे