Gibt es in .NET eine einfache Möglichkeit, das aktuelle Protokoll, den Host und den Port schnell abzurufen? Zum Beispiel, wenn ich unter der folgenden URL bin:
http://www.mywebsite.com:80/pages/page1.aspx
Ich muss zurückkehren:
http://www.mywebsite.com:80
Ich weiß, dass ich Request.Url.AbsoluteUri
die vollständige URL abrufen kann, und ich weiß, dass ich Request.Url.Authority
den Host und den Port abrufen kann, aber ich bin mir nicht sicher, wie ich das Protokoll am besten abrufen kann, ohne die URL-Zeichenfolge zu analysieren.
Irgendwelche Vorschläge?
Antworten:
Der folgende (C #) Code sollte den Trick machen
quelle
Uri.GetLeftPart
als @dthrasher weist darauf hinObwohl @Rick die akzeptierte Antwort auf diese Frage hat, gibt es tatsächlich einen kürzeren Weg, dies mit der schlecht benannten
Uri.GetLeftPart()
Methode zu tun .Es gibt jedoch einen Haken
GetLeftPart()
. Wenn der Port der Standardport für das Schema ist, wird er entfernt. Da Port 80 der Standardport für http ist, wirdGetLeftPart()
in meinem obigen Beispiel die Ausgabe von ausgeführthttp://www.mywebsite.com
.Wenn die Portnummer nicht 80 gewesen wäre, wäre sie im Ergebnis enthalten.
quelle
Uri
Klasse so zu benutzen . Es gibt eine Vielzahl von Fällen, in denen dieser Konstruktor eine Ausnahme auslöst. In den meisten Fällen bevorzuge ich, dass mein Code etwas verzeihender ist, bevor die jeweilige Aufgabe abgebrochen wird.Wenn Sie dies in Asp.Net tun oder Zugriff auf HttpContext.Current.Request haben, würde ich sagen, dass dies einfachere und allgemeinere Methoden sind, um sie zu erhalten:
Ich hoffe das hilft. :) :)
quelle
Eine strukturiertere Möglichkeit, dies zu erreichen, ist die Verwendung von UriBuilder. Dies vermeidet eine direkte Manipulation der Zeichenfolge.
quelle
Request.Url gibt Ihnen den Uri der Anfrage zurück. Sobald Sie das haben, können Sie so ziemlich alles abrufen, was Sie wollen. Rufen Sie die Scheme- Eigenschaft auf, um das Protokoll abzurufen .
Stichprobe:
Hoffe das hilft.
quelle
Für einen noch kürzeren Weg ist möglicherweise ein neueres ASP.Net erforderlich:
In der UriComponents-Enumeration können Sie angeben, welche Komponente (n) des URI Sie einschließen möchten.
quelle
Sehr ähnlich zu Holgers Antwort. Wenn Sie die URL abrufen müssen, können Sie Folgendes tun:
Die Uri-Klasse bietet eine ganze Reihe von Methoden, von denen ich viele nicht aufgelistet habe.
In meinem Fall musste ich mich
LocalHost
an die haltenPort Number
, also habe ich Folgendes getan:Welche erfolgreich ergriffen:
http://localhost:12345
quelle