Saya bertanya-tanya apa cara terbaik untuk mendapatkan domain saat ini di ASP.NET?
Misalnya:
http://www.domainname.com/subdir/ harus menghasilkan http://www.domainname.com http://www.sub.domainname.com/subdir/ harus menghasilkan http://sub.domainname.com
Sebagai panduan, saya harus dapat menambahkan url seperti "/Folder/Content/filename.html" (katakanlah seperti yang dihasilkan oleh Url.RouteUrl () di ASP.NET MVC) langsung ke URL dan seharusnya berfungsi.
asp.net
asp.net-mvc
domain-name
Matt Mitchell
sumber
sumber
Jawaban:
Jawaban yang sama dengan MattMitchell tetapi dengan beberapa modifikasi. Ini memeriksa port default sebagai gantinya.
sumber
Request.Url.Authority
seperti yang disarankan Korayem daripadaRequest.Url.Host
danRequest.Url.Port
.Sesuai tautan ini, titik awal yang baik adalah:
Namun, jika domainnya adalah http://www.domainname.com:500 ini akan gagal.
Sesuatu seperti berikut ini menggoda untuk menyelesaikannya:
Namun, port 80 dan 443 akan bergantung pada konfigurasi.
Karena itu, Anda harus menggunakan
IsDefaultPort
seperti dalam Jawaban yang Diterima di atas dari Carlos Muñoz.sumber
Ini termasuk skema.
sumber
PERINGATAN! Kepada siapa saja yang menggunakan Current.Request .Url.Host. Pahami bahwa Anda bekerja berdasarkan PERMINTAAN SAAT INI dan bahwa permintaan saat ini tidak akan SELALU berada di server Anda dan terkadang dapat berada di server lain.
Jadi jika Anda menggunakan ini di sesuatu seperti, Application_BeginRequest () di Global.asax, maka 99,9% dari waktu itu akan baik-baik saja, tetapi 0,1% Anda mungkin mendapatkan sesuatu selain nama host server Anda sendiri.
Contoh bagus tentang ini adalah sesuatu yang saya temukan belum lama ini. Server saya cenderung menekan http://proxyjudge1.proxyfire.net/fastenv dari waktu ke waktu. Application_BeginRequest () dengan senang hati menangani permintaan ini jadi jika Anda memanggil Request.Url.Host saat membuat permintaan ini, Anda akan mendapatkan kembali proxyjudge1.proxyfire.net. Beberapa dari Anda mungkin berpikir "no duh" tetapi perlu diperhatikan karena ini adalah bug yang sangat sulit untuk diperhatikan karena hanya terjadi 0,1% dari waktu: P
Bug ini memaksa saya untuk memasukkan host domain saya sebagai string di file konfigurasi.
sumber
Mengapa tidak digunakan
Request.Url.Authority
Ini mengembalikan seluruh domain DAN port.
Anda masih perlu mencari http atau https
sumber
Cara sederhana dan singkat (mendukung skema, domain dan port):
Menggunakan
Request.GetFullDomain()
sumber
Cara lain:
sumber
Bagaimana tentang:
sumber
Menggunakan UriBuilder:
sumber
Bagaimana tentang:
sumber