Katakanlah saya meng-hosting situs web di http://www.foobar.com .
Apakah ada cara agar saya secara terprogram dapat memastikan " http://www.foobar.com/ " dalam kode saya di belakang (yaitu tanpa harus melakukan hardcode di konfigurasi web saya)?
Katakanlah saya meng-hosting situs web di http://www.foobar.com .
Apakah ada cara agar saya secara terprogram dapat memastikan " http://www.foobar.com/ " dalam kode saya di belakang (yaitu tanpa harus melakukan hardcode di konfigurasi web saya)?
Jawaban:
HttpContext.Current.Request.Url bisa memberi Anda semua info di URL. Dan dapat memecah url menjadi fragmennya.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
Metode GetLeftPart mengembalikan string yang berisi bagian paling kiri dari string URI, diakhiri dengan bagian yang ditentukan oleh bagian.
Segmen skema dan otoritas URI.
Bagi yang masih bertanya-tanya, jawaban yang lebih lengkap tersedia di http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/ .
public string FullyQualifiedApplicationPath
{
get
{
//Return variable declaration
var appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}{3}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port,
context.Request.ApplicationPath);
}
if (!appPath.EndsWith("/"))
appPath += "/";
return appPath;
}
}
context.Request.Url.Port == 80
dengan (context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
atau menggunakan jawaban di bawah ini
Jika contoh Url adalah http://www.foobar.com/Page1
HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1"
HttpContext.Current.Request.Url.Host; //returns "www.foobar.com"
HttpContext.Current.Request.Url.Scheme; //returns "http/https"
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com"
.Host
dari "http://www.foobar.com/Page1"
adalah www.foobar.com
, bukan foobar.com
.
Untuk mendapatkan seluruh string URL permintaan:
HttpContext.Current.Request.Url
Untuk mendapatkan bagian permintaan www.foo.com:
HttpContext.Current.Request.Url.Host
Perhatikan bahwa Anda, pada tingkat tertentu, bergantung pada faktor-faktor di luar aplikasi ASP.NET Anda. Jika IIS dikonfigurasi untuk menerima beberapa atau setiap header host untuk aplikasi Anda, maka salah satu domain yang diselesaikan ke aplikasi Anda melalui DNS dapat muncul sebagai Url Permintaan, bergantung pada yang mana yang dimasukkan pengguna.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => kembalikan host.com
s.host.com => kembalikan host.com
host.co.uk => return host.co.uk
www.host.co.uk => return host.co.uk
s1.www.host.co.uk => return host.co.uk
Saya tahu ini lebih tua tetapi cara yang benar untuk melakukan ini sekarang adalah
string Domain = HttpContext.Current.Request.Url.Authority
Itu akan mendapatkan DNS atau alamat ip dengan port untuk server.
Ini juga berfungsi:
string url = HttpContext.Request.Url.Authority;
C # Contoh Di Bawah:
string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();
string host = Request.Url.Host;
Regex domainReg = new Regex("([^.]+\\.[^.]+)$");
HttpCookie cookie = new HttpCookie(cookieName, "true");
if (domainReg.IsMatch(host))
{
cookieDomain = domainReg.Match(host).Groups[1].Value;
}
Ini akan mengembalikan secara spesifik apa yang Anda minta.
Dim mySiteUrl = Request.Url.Host.ToString()
Saya tahu ini pertanyaan lama. Tapi saya membutuhkan jawaban sederhana yang sama dan ini mengembalikan persis apa yang diminta (tanpa http: //).
Request
objek.