Rufen Sie die URL der ASP.Net-Seite im Code-Behind ab

Ich habe eine ASP.Net-Seite, die auf ein paar verschiedenen Servern gehostet wird, und ich möchte die URL der Seite (oder noch besser: die Seite, auf der die Seite gehostet wird) als eine Zeichenfolge für die Verwendung im Code-Behind erhalten . Irgendwelche Ideen?

0
hinzugefügt
Ansichten: 16
detaillierte Antwort hier stackoverflow.com/questions/593709/…
hinzugefügt der Autor Learning, Quelle
hinzugefügt der Autor Kimball Robinson, Quelle

10 Antworten

Möchten Sie den Servernamen? Oder der Hostname?

Request.Url.Host ala Stephen

Dns.GetHostName - Server name

Request.Url will have access to most everything you'll need to know about the page being requested.

0
hinzugefügt

Ich benutze dies in meinem Code in einer benutzerdefinierten Klasse. Dies ist praktisch, um E-Mails wie [email protected] zu verschicken "keine Antwort @" + BaseSiteUrl Funktioniert auf jeder Site.

// get a sites base urll ex: example.com
public static string BaseSiteUrl
{
    get
    {
        HttpContext context = HttpContext.Current;
        string baseUrl = context.Request.Url.Authority + context.Request.ApplicationPath.TrimEnd('/');
        return baseUrl;
    }

}

Wenn Sie es im Codebehind verwenden möchten, werden Sie den Kontext los.

0
hinzugefügt

Wenn Sie wie am Beispiel.com?id=99999 eine eindeutige Zeichenfolge am Ende einfügen möchten, verwenden Sie Folgendes

Dim rawUrl As String = Request.RawUrl.ToString()
0
hinzugefügt

Wenn Sie nur den Schema- und Berechtigungsteil der Anfrage (Protokoll, Host und Port) verwenden möchten

Request.Url.GetLeftPart(UriPartial.Authority)
0
hinzugefügt
Eine noch bessere Lösung findet sich unter stackoverflow.com/questions/567590/…
hinzugefügt der Autor Kimball Robinson, Quelle
@ Kimball Ich bin mir nicht sicher, die Verkettung von Strings zusammen ist eine bessere Lösung.
hinzugefügt der Autor WDuffy, Quelle

Anfrage.Url.Host

0
hinzugefügt

Benutze das:

Request.Url.AbsoluteUri

Dadurch erhalten Sie den vollständigen Pfad (einschließlich http://.. .)

0
hinzugefügt
Denken Sie daran, dass dies auch den Abfrageteil enthält (? Key = value ....)
hinzugefügt der Autor Marcel, Quelle
Dies funktioniert nicht, wenn die Anwendung nicht auf dem Serverstamm, sondern in einem Verzeichnis gehostet wird. Wenn die Anwendung auf www.contoso.com/app/ gehostet wird, wird nur www.contoso.com zurückgegeben
hinzugefügt der Autor linkerro, Quelle

Ich stehe voder demselben Problem und bisher habe ich gefunden:

new Uri(Request.Url,Request.ApplicationPath)

oder

Request.Url.GetLeftPart(UriPartial.Authoderity)+Request.ApplicationPath
0
hinzugefügt
Request.Url.GetLeftPart(UriPartial.Authority) + Request.FilePath + "?theme=blue";

Dadurch erhalten Sie den vollständigen Pfad zu der Seite, auf der Sie sitzen. Ich fügte die Querystring hinzu.

0
hinzugefügt

ich benutze

Request.Url.GetLeftPart(UriPartial.Authority) +
        VirtualPathUtility.ToAbsolute("~/")
0
hinzugefügt

Mit einer js-Datei können Sie Folgendes erfassen, das auch im Codebehind verwendet werden kann:

<script type="text/javascript">
    alert('Server: ' + window.location.hostname);
    alert('Full path: ' + window.location.href);
    alert('Virtual path: ' + window.location.pathname);
    alert('HTTP path: ' + 
        window.location.href.replace(window.location.pathname, ''));    
</script>
0
hinzugefügt