Saya menggunakan plugin komentar Facebook di blog yang saya buat. Ini memiliki beberapa tag FBXML yang ditafsirkan oleh javascript facebook yang dirujuk pada halaman.
Ini semua berfungsi dengan baik, tetapi saya harus meneruskan URL yang saat ini memenuhi syarat ke plugin.
<div style="width: 900px; margin: auto;">
<div id="fb-root"></div>
<fb:comments href="URL HERE" num_posts="10" width="900"></fb:comments>
</div>
Apa cara terbaik untuk mendapatkan URL halaman saat ini? URL permintaan.
Larutan
Ini kode terakhir dari solusi saya:
<fb:comments href="@Request.Url.AbsoluteUri" num_posts="15" width="900"></fb:comments>
c#
asp.net
asp.net-mvc
razor
Chev
sumber
sumber
Request.Url.ToString()
atauRequest.Url.AbsoluteUri
?Request.Url.AbsoluteUri
melakukannya :)Tambahkan metode ekstensi ini ke kode Anda:
Dan kemudian Anda dapat menjalankannya
RequestContext.HttpContext.Request
properti.Ada bug (dapat digerakkan samping, lihat di bawah) di Asp.Net yang muncul pada mesin yang menggunakan port selain port 80 untuk situs web lokal (masalah besar jika situs web internal diterbitkan melalui load-balancing pada IP virtual dan port digunakan secara internal untuk aturan penerbitan) dimana Asp.Net akan selalu menambahkan port pada
AbsoluteUri
properti - bahkan jika permintaan asli tidak menggunakannya.Kode ini memastikan bahwa url yang dikembalikan selalu sama dengan Url yang browser aslinya diminta (termasuk port - karena akan dimasukkan dalam header host) sebelum terjadi penyeimbangan beban, dll.
Setidaknya, itu terjadi di lingkungan kami (agak berbelit-belit!) :)
Jika ada proksi funky di antara yang menulis ulang header host, maka ini tidak akan berhasil.
Pembaruan 30 Juli 2013
Seperti yang disebutkan oleh @KevinJones dalam komentar di bawah - pengaturan yang saya sebutkan di bagian selanjutnya telah didokumentasikan di sini: http://msdn.microsoft.com/en-us/library/hh975440.aspx
Meskipun saya harus mengatakan saya tidak bisa membuatnya bekerja ketika saya mencobanya - tapi itu bisa saja saya membuat kesalahan ketik atau sesuatu.
Pembaruan 9 Juli 2012
Saya menemukan ini beberapa waktu yang lalu, dan bermaksud memperbarui jawaban ini, tetapi tidak pernah melakukannya. Ketika seorang upvote baru saja masuk pada jawaban ini saya pikir saya harus melakukannya sekarang.
'Bug' yang saya sebutkan di Asp.Net dapat dikontrol dengan nilai appSettings yang tampaknya tidak berdokumen - disebut
'aspnet:UseHostHeaderForRequest'
- yaitu:Saya menemukan ini sambil melihat
HttpRequest.Url
dalam ILSpy - ditunjukkan oleh--->
di sebelah kiri copy / paste berikut dari tampilan ILSpy:Saya pribadi belum menggunakannya - tidak terdokumentasi dan karenanya tidak dijamin untuk tetap - namun mungkin melakukan hal yang sama seperti yang saya sebutkan di atas. Untuk meningkatkan relevansi dalam hasil pencarian - dan untuk mengakui orang lain yang seeems telah menemukan ini - yang
'aspnet:UseHostHeaderForRequest'
pengaturan juga telah disebutkan oleh Nick Aceves di Twittersumber
sumber
harus bekerja dengan sempurna, terutama jika Anda hanya ingin Uri relatif (tetapi menjaga querystrings)
sumber
Saya juga mencari ini untuk alasan Facebook dan tidak ada jawaban yang diberikan sejauh ini berfungsi sesuai kebutuhan atau terlalu rumit.
Mendapat protokol, host dan path lengkap "tanpa" querystring. Juga termasuk porta jika Anda menggunakan sesuatu selain dari default 80.
sumber
Kesukaanku...
atau hanya...
sumber
Satu hal yang tidak disebutkan dalam jawaban lain adalah sensitivitas case, jika itu akan direferensikan di banyak tempat (yang tidak ada dalam pertanyaan asli tetapi layak dipertimbangkan karena pertanyaan ini muncul dalam banyak pencarian serupa ). Berdasarkan jawaban lain saya menemukan yang berikut ini bekerja untuk saya pada awalnya:
Request.Url.AbsoluteUri.ToString()
Tetapi agar lebih dapat diandalkan ini kemudian menjadi:
Request.Url.AbsoluteUri.ToString().ToLower()
Dan kemudian untuk persyaratan saya (memeriksa dari mana nama domain situs itu diakses dan menunjukkan konten yang relevan):
Request.Url.AbsoluteUri.ToString().ToLower().Contains("xxxx")
sumber
Bagi saya masalahnya adalah ketika saya mencoba mengakses
HTTPContext
konstruktor Pengendali sementaraHTTPContext
belum siap. Ketika dipindahkan ke dalam metode Indeks, itu berhasil:sumber
Kasing (gaya halaman tunggal) untuk riwayat browser
sumber