Ich habe eine URL wie diese:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Ich möchte davon profitieren http://www.example.com/mypage.aspx.
Kannst du mir sagen, wie ich es bekommen kann?
Ich habe eine URL wie diese:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Ich möchte davon profitieren http://www.example.com/mypage.aspx.
Kannst du mir sagen, wie ich es bekommen kann?
Antworten:
Sie können verwenden 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);
Oder Sie können verwenden substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
BEARBEITEN: Ändern der ersten Lösung, um den Vorschlag von brillyfresh in den Kommentaren widerzuspiegeln.
substringMethode gibt einen Fehler aus, wenn keine Abfragezeichenfolge vorhanden ist. Verwenden Sie string path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);stattdessen.
Hier ist eine einfachere Lösung:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);
Von hier ausgeliehen: Abfragezeichenfolge abschneiden und saubere URL C # ASP.net zurückgeben
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(ist eine weitere großartige Methode, um Teile eines Uri zu erhalten. Ich wusste bis jetzt nichts über diese beiden!
Request.RawUrl.Split(new[] {'?'})[0];
RawUrldie URL vor dem erneuten Schreiben der URL abgerufen wird. Verwenden Sie sie also möglicherweise AbsoluteUri? Request.Url.AbsoluteUri.Split('?')[0]
Gute Antwort auch hier Antwortquelle gefunden
Request.Url.GetLeftPart(UriPartial.Path)
Meine Art:
new UriBuilder(url) { Query = string.Empty }.ToString()
oder
new UriBuilder(url) { Query = string.Empty }.Uri
Uri.GetLeftPart. Die neueste Version von NET Core (1.1) sollte diese Methode haben (kann nicht bestätigen, da ich
Sie können verwenden Request.Url.AbsolutePath, um den Seitennamen sowie Request.Url.Authorityden Hostnamen und den Port abzurufen. Ich glaube nicht, dass es eine eingebaute Immobilie gibt, die Ihnen genau das bietet, was Sie wollen, aber Sie können sie selbst kombinieren.
Split () Variation
Ich möchte diese Variante nur als Referenz hinzufügen. URLs sind oft Zeichenfolgen und daher ist es einfacher, die Split()Methode zu verwenden als Uri.GetLeftPart(). Und Split()kann auch dazu gebracht werden, mit relativen, leeren und Nullwerten zu arbeiten, während Uri eine Ausnahme auslöst. Darüber hinaus können URLs auch einen Hash wie /report.pdf#page=10(der das PDF auf einer bestimmten Seite öffnet) enthalten.
Die folgende Methode behandelt alle diese Arten von URLs:
var path = (url ?? "").Split('?', '#')[0];
Beispielausgabe:
http: //domain/page.html#page=2 ---> http: //domain/page.html
page.html ---> page.html
Hier ist eine Erweiterungsmethode unter Verwendung der Antwort von @ Kolman. Es ist geringfügig einfacher, sich daran zu erinnern, Path () zu verwenden als GetLeftPart. Möglicherweise möchten Sie Path to GetPath umbenennen, zumindest bis C # Erweiterungseigenschaften hinzugefügt werden.
Verwendung:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar");
string path = uri.Path();
Die Klasse:
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);
}
}
}
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.split('?')[0];
Request.RawUrl.Split('?')[0]
Nur für URL-Namen !!
Ich habe eine einfache Erweiterung erstellt, da einige der anderen Antworten null Ausnahmen auslösten, wenn es zunächst keine gab 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;
}
Verwendung:
var url = Request.Url?.AbsoluteUri.TrimQueryString()
System.Uri.GetComponents, nur angegebene Komponenten, die Sie möchten.
Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);
Ausgabe:
http://www.example.com/mypage.aspx
var canonicallink = Request.Url.Scheme + "://" + Request.Url.Authority + Request.Url.AbsolutePath.ToString();
Versuche dies:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
Von hier: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye erhalten Sie Folgendes: mypage.aspx
this.Request.RawUrl.Substring(0, this.Request.RawUrl.IndexOf('?'))