Saya ingin menulis metode pembantu kecil yang mengembalikan URL dasar situs. Inilah yang saya pikirkan:
public static string GetSiteUrl()
{
string url = string.Empty;
HttpRequest request = HttpContext.Current.Request;
if (request.IsSecureConnection)
url = "https://";
else
url = "http://";
url += request["HTTP_HOST"] + "/";
return url;
}
Apakah ada kesalahan dalam hal ini, yang dapat Anda pikirkan? Adakah yang bisa memperbaiki ini?
c#
asp.net
uri
httprequest
Jaggu
sumber
sumber
Jawaban:
Coba ini:
sumber
Itu dia ;)
sumber
Sayangnya,
GetLeftPart
solusi populer tidak didukung dalam versi PCLUri
.GetComponents
adalah, bagaimanapun, jadi jika Anda membutuhkan portabilitas, ini harus melakukan trik:sumber
Saya percaya bahwa jawaban di atas tidak mempertimbangkan ketika situs tersebut tidak berada di root situs web.
Ini adalah untuk pengontrol WebApi:
sumber
Bagi saya, @ warlock sepertinya jawaban terbaik di sini sejauh ini, tapi saya selalu menggunakan ini di masa lalu;
Atau di pengontrol WebAPI;
yang berguna sehingga Anda dapat memilih format apa yang Anda inginkan. Saya tidak jelas mengapa ada dua implementasi yang berbeda, dan sejauh yang saya tahu, metode ini dan @ warlock mengembalikan hasil yang sama persis dalam kasus ini, tetapi sepertinya
GetLeftPart()
juga akan berfungsi untukmailto
tag non-server seperti Uri misalnya .sumber
Ini adalah metode pembuktian yang jauh lebih bodoh.
sumber
/
jika Anda meng-host di beberapa domain aplikasi misalnya server Anda / namasaya pergi dengan
sumber
Berdasarkan apa yang ditulis Warlock, saya menemukan bahwa root path virtual diperlukan jika Anda tidak di-host di root web Anda. (Ini berfungsi untuk pengontrol API Web MVC)
sumber
Saya menggunakan kode berikut dari Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
sumber
Ini bekerja untuk saya.
Jadi, jika Anda ingin mengakses nama domain Anda, pertimbangkan untuk memasukkan nama aplikasi jika:
====================================
Untuk dev.x.us/web
itu mengembalikan teks yang kuat ini
sumber
Silakan gunakan kode di bawah ini
sumber
sumber
Anda bisa menambahkan port untuk non port 80 / SSL?
sesuatu seperti:
dan menggunakannya dalam hasil akhir?
sumber
Request.Url.Authority
akan memasukkan nomor port jika tidak standar