Apakah ada cara sederhana di .NET untuk dengan cepat mendapatkan protokol, host, dan port saat ini? Misalnya, jika saya menggunakan URL berikut:
http://www.mywebsite.com:80/pages/page1.aspx
Saya harus kembali:
http://www.mywebsite.com:80
Saya tahu saya bisa menggunakannya Request.Url.AbsoluteUri
untuk mendapatkan URL yang lengkap, dan saya tahu saya dapat menggunakan Request.Url.Authority
untuk mendapatkan host dan port, tetapi saya tidak yakin tentang cara terbaik untuk mendapatkan protokol tanpa menguraikan string URL.
Ada saran?
Jawaban:
Kode (C #) berikut harus melakukan trik
sumber
Uri.GetLeftPart
seperti yang ditunjukkan oleh @dthrasherMeskipun @Rick memiliki jawaban yang diterima untuk pertanyaan ini, sebenarnya ada cara yang lebih pendek untuk melakukan ini, menggunakan metode yang tidak disebutkan namanya
Uri.GetLeftPart()
.Namun, ada satu tangkapan untuk
GetLeftPart()
. Jika port adalah port default untuk skema, itu akan menghapusnya. Karena port 80 adalah port default untuk http, outputGetLeftPart()
dalam contoh saya di atas akan menjadihttp://www.mywebsite.com
.Jika nomor port adalah sesuatu selain 80, itu akan dimasukkan dalam hasilnya.
sumber
Uri
kelas dengan cara ini. Ada banyak kasus di mana konstruktor ini akan memberikan pengecualian. Untuk sebagian besar kasus, saya lebih suka kode saya sedikit lebih memaafkan sebelum membatalkan tugas yang ada.Baik jika Anda melakukan ini di Asp.Net atau memiliki akses ke HttpContext.Current.Request Saya akan mengatakan ini adalah cara yang lebih mudah dan lebih umum untuk mendapatkannya:
Saya harap ini membantu. :)
sumber
Cara yang lebih terstruktur untuk mendapatkan ini adalah dengan menggunakan UriBuilder. Ini menghindari manipulasi string langsung.
sumber
Request.Url akan mengembalikan Uri dari permintaan Anda. Setelah Anda memilikinya, Anda dapat mengambil hampir semua yang Anda inginkan. Untuk mendapatkan protokol, hubungi Skema properti .
Sampel:
Semoga ini membantu.
sumber
Cara yang lebih pendek, mungkin memerlukan ASP.Net yang lebih baru:
Enum UriComponents memungkinkan Anda menentukan komponen URI mana yang ingin Anda sertakan.
sumber
Sangat mirip dengan jawaban Holger. Jika Anda perlu mengambil URL dapat melakukan sesuatu seperti:
Kelas Uri menyediakan berbagai macam metode, banyak yang belum saya sebutkan.
Dalam contoh saya, saya perlu
LocalHost
mengikutiPort Number
, jadi inilah yang saya lakukan:Yang berhasil meraih:
http://localhost:12345
sumber