जवाबों:
आप उपयोग कर सकते हैं System.Uri
Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = String.Format("{0}{1}{2}{3}", url.Scheme,
Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);
या आप उपयोग कर सकते हैं substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
संपादित करें: टिप्पणियों में brillyfresh के सुझाव को प्रतिबिंबित करने के लिए पहला समाधान संशोधित करना।
substringवहाँ अगर कोई क्वेरी स्ट्रिंग विधि त्रुटि दे देंगे। string path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);इसके बजाय उपयोग करें ।
यहाँ एक सरल उपाय है:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);
यहां से उधार लिया गया: ट्रंकिंग क्वेरी स्ट्रिंग और रिटर्निंग क्लीन URL C # ASP.net
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(उड़ी के भागों को प्राप्त करने की एक और भयानक विधि है। मैं अब तक इन दोनों के बारे में नहीं जानता था!
Request.RawUrl.Split(new[] {'?'})[0];
RawUrlमिलेगा , इसलिए शायद उपयोग करें ? AbsoluteUriRequest.Url.AbsoluteUri.Split('?')[0]
मरे तरीके:
new UriBuilder(url) { Query = string.Empty }.ToString()
या
new UriBuilder(url) { Query = string.Empty }.Uri
Uri.GetLeftPart। NET Core (1.1) के नवीनतम संस्करण में वह विधि होनी चाहिए (क्योंकि मैं अभी नेट नेट 1.1 पर नहीं हूं, इसकी पुष्टि करता हूं)
आप Request.Url.AbsolutePathपृष्ठ का नाम, और Request.Url.Authorityहोस्ट नाम और पोर्ट के लिए उपयोग कर सकते हैं । मेरा मानना है कि वहाँ एक संपत्ति में बनाया गया है कि आप वास्तव में आप क्या चाहते हैं, लेकिन आप उन्हें अपने आप को जोड़ सकते हैं।
विभाजन () भिन्नता
मैं केवल संदर्भ के लिए इस भिन्नता को जोड़ना चाहता हूं। उरल्स अक्सर तार होते हैं और इसलिए यह Split()विधि का उपयोग करने के लिए सरल है Uri.GetLeftPart()। और Split()रिश्तेदार, खाली और अशक्त मूल्यों के साथ काम करने के लिए भी बनाया जा सकता है, जबकि उरी एक अपवाद फेंकता है। इसके अतिरिक्त, Urls में एक हैश भी हो सकता है जैसे कि/report.pdf#page=10 (जो एक विशिष्ट पृष्ठ पर पीडीएफ खोलता है)।
निम्नलिखित विधि इन सभी प्रकार के Urls से संबंधित है:
var path = (url ?? "").Split('?', '#')[0];
उदाहरण आउटपुट:
http: //domain/page.html#page=2 ---> http: //domain/page.html
page.html ---> page.html
यहाँ @ कोलमैन के उत्तर का उपयोग करके एक विस्तार विधि दी गई है। GetLeftPart की तुलना में पथ () का उपयोग करना याद रखना थोड़ा आसान है। आप पथ को गेटपाथ में बदलना चाहते हैं, कम से कम जब तक वे C # में एक्सटेंशन गुण नहीं जोड़ते।
उपयोग:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar");
string path = uri.Path();
कक्षा:
using System;
namespace YourProject.Extensions
{
public static class UriExtensions
{
public static string Path(this Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
}
return uri.GetLeftPart(UriPartial.Path);
}
}
}
Request.RawUrl.Split('?')[0]
केवल url नाम के लिए !!
मैं एक साधारण विस्तार बनाया है, अगर वहाँ के QueryStringसाथ शुरू करने के लिए नहीं था, तो कुछ अन्य उत्तर शून्य अपवाद फेंक दिए थे:
public static string TrimQueryString(this string source)
{
if (string.IsNullOrEmpty(source))
return source;
var hasQueryString = source.IndexOf('?') != -1;
if (!hasQueryString)
return source;
var result = source.Substring(0, source.IndexOf('?'));
return result;
}
उपयोग:
var url = Request.Url?.AbsoluteUri.TrimQueryString()
System.Uri.GetComponents, आप चाहते हैं बस निर्दिष्ट घटक।
Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);
आउटपुट:
http://www.example.com/mypage.aspx
var canonicallink = Request.Url.Scheme + "://" + Request.Url.Authority + Request.Url.AbsolutePath.ToString();
इसे इस्तेमाल करे:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
इसमें से: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye आपको यह मिलेगा: mypage.aspx
this.Request.RawUrl.Substring(0, this.Request.RawUrl.IndexOf('?'))