Ich frage mich, wie Sie die aktuelle Domain am besten in ASP.NET erhalten können.
Zum Beispiel:
http://www.domainname.com/subdir/ sollte Ausbeute http://www.domainname.com http://www.sub.domainname.com/subdir/ sollte Ausbeute http://sub.domainname.com
Als Leitfaden sollte ich in der Lage sein, eine URL wie "/Folder/Content/filename.html" (etwa wie von Url.RouteUrl () in ASP.NET MVC generiert) direkt zur URL hinzuzufügen, und es sollte funktionieren.
asp.net
asp.net-mvc
domain-name
Matt Mitchell
quelle
quelle
Antworten:
Gleiche Antwort wie bei MattMitchell, jedoch mit einigen Änderungen. Dadurch wird stattdessen nach dem Standardport gesucht.
quelle
Request.Url.Authority
wie von Korayem vorgeschlagen anstelle vonRequest.Url.Host
und verwendenRequest.Url.Port
.Gemäß diesem Link ist ein guter Ausgangspunkt:
Wenn die Domain jedoch http://www.domainname.com:500 lautet, schlägt dies fehl.
So etwas wie das Folgende ist verlockend, um dieses Problem zu lösen:
Die Ports 80 und 443 hängen jedoch von der Konfiguration ab.
Als solches sollten Sie
IsDefaultPort
wie in der oben genannten akzeptierten Antwort von Carlos Muñoz verwenden.quelle
Dies ist Schema enthalten.
quelle
WARNUNG! An alle, die Current.Request .Url.Host verwenden. Verstehen Sie, dass Sie basierend auf der AKTUELLEN ANFRAGE arbeiten und dass die aktuelle Anforderung nicht IMMER bei Ihrem Server und manchmal auch bei anderen Servern sein wird.
Wenn Sie dies also in etwas wie Application_BeginRequest () in Global.asax verwenden, ist es in 99,9% der Fälle in Ordnung, aber in 0,1% erhalten Sie möglicherweise etwas anderes als den Hostnamen Ihres eigenen Servers.
Ein gutes Beispiel dafür habe ich vor kurzem entdeckt. Mein Server neigt von Zeit zu Zeit dazu, http://proxyjudge1.proxyfire.net/fastenv aufzurufen . Application_BeginRequest () bearbeitet diese Anfrage gerne. Wenn Sie also Request.Url.Host aufrufen, wenn diese Anfrage gestellt wird, erhalten Sie proxyjudge1.proxyfire.net zurück. Einige von Ihnen denken vielleicht "no duh", sind aber erwähnenswert, da es ein sehr schwerer Fehler war, ihn zu bemerken, da er nur in 0,1% der Fälle auftrat: P.
Dieser Fehler hat mich gezwungen, meinen Domain-Host als Zeichenfolge in die Konfigurationsdateien einzufügen.
quelle
Warum nicht verwenden
Request.Url.Authority
Es gibt die gesamte Domain UND den Port zurück.
Sie müssen noch http oder https berechnen
quelle
Einfacher und kurzer Weg (es unterstützt Schema, Domäne und Port):
Verwenden
Request.GetFullDomain()
quelle
Ein anderer Weg:
quelle
Wie wäre es mit:
quelle
Verwenden von UriBuilder:
quelle
Wie wäre es mit:
quelle