2011-11-03 17 views
14

सहित यूआरएल का मुख्य भाग प्राप्त करें। मैं .NET 4.0 C# के साथ काम कर रहा हूं।वर्चुअल निर्देशिका

मैं किसी भी वर्चुअल निर्देशिका सहित वर्तमान http अनुरोध से यूआरएल प्राप्त करने में सक्षम होना चाहता हूं। इसलिए उदाहरण (अनुरोध और मांग की मूल्य) के लिए:

http://www.website.com/shop/test.aspx ->http://www.website.com/shop/

http://www.website.com/test.aspx ->http://www.website.com/

http://website.com/test.aspx ->http://website.com/

यह कैसे प्राप्त करने के लिए यह संभव है?

उत्तर

29

यह है कि मैं क्या

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath; 
+0

HttpContext.Current.Request.AplicationPath उनके पहले उदाहरण में वापस नहीं आएगा/दुकान/यदि यह एप्लिकेशन की जड़ नहीं है। –

+1

यह एक अच्छा मुद्दा है IF 'दुकान' एक आभासी निर्देशिका नहीं है। मुझे लगता है कि मैं इस धारणा के साथ चला गया कि यह शौकिया के सवाल पर आधारित था। तो सवाल तब बन जाता है जब शौकिया एप्लिकेशन की जड़ (मेरा कोड क्या प्रदान करता है) के लिए पूरा पथ चाहता है या सिर्फ पूर्ण यूआरएल फ़ाइल नाम से कम है। –

+0

अब जब मैं प्रश्न दोबारा पढ़ता हूं, तो वे केवल वर्चुअल निर्देशिका कहते हैं, इसलिए आपका उत्तर विशेष रूप से प्रश्न को फिट करता है। –

4

Request.Url का उपयोग सब कुछ आप की जरूरत को शामिल करना चाहिए है। उस बिंदु पर यह स्ट्रिंग की जांच करने का विषय है, और आप इससे क्या हासिल करना पसंद करते हैं। मैंने पहले AbsoluteUri का उपयोग किया है, और यह काम करता है।

यह उदाहरण सबूत मूर्ख नहीं है, लेकिन आप क्या इस से यह पता लगाने की जरूरत है में सक्षम होना चाहिए:

string Uri = Request.Url.AbsoluteUri; 
string Output = Uri.Substring(0, Uri.LastIndexOf('/') + 1); 
0

यह काम करना चाहिए

Request.Url.OriginalString.Substring(0, Request.Url.OriginalString.LastIndexOf(Request.FilePath.Substring(Request.FilePath.LastIndexOf("/")))) + "/" 
1

यह समाधान काम कर सकता था और कम है :

string url = (new Uri(Request.Url, ".")).OriginalString; 
संबंधित मुद्दे