Dalam latihan ini, Anda akan mengimplementasikan pengendali HTTP di aplikasi web ASP.NET untuk mengembalikan feed GeoRSS. GeoRSS adalah standar untuk memasukkan data geospasial ke dalam umpan RSS. GeoRSS mendefinisikan format khusus yang disebut GeoRSS GML untuk memasukkan data berformat GML ke dalam umpan. Aplikasi klien dapat berlangganan feed GeoRSS dengan cara yang sama seperti feed RSS biasa. Data dalam format GeoRSS dapat dengan mudah diimpor ke kontrol VEMap Microsoft Virtual Earth.
Catatan: Anda dapat menyalin kode yang digunakan dalam latihan ini dari halaman situs web yang telah selesai di C:SQLHOLSSpatial dan VESolutionStoreFinderSite.
Menerapkan penangan HTTP
1. Mulai Microsoft Visual Studio 2008.
2. Pada menu File, klik Buka Situs Web, lalu buka situs web C:SQLHOLsSpatial dan VEStarterStoreFinderSite.
3. Di Solution Explorer, perluas App_Code, lalu klik dua kali GeoRSSHandler.vb untuk membukanya di editor kode.
Catatan: Penangan HTTP adalah modul kode yang menangani permintaan HTTP ke aplikasi web. Permintaan ke aplikasi Web ASP.NET biasanya ditangani oleh penangan permintaan ASP.NET default, namun Anda dapat membuat penangan khusus untuk ekstensi file tertentu. Dalam contoh ini, Anda akan mengimplementasikan handler yang akan menangani permintaan file dengan ekstensi .georss.
4. Periksa kode yang ada. Proses yang menangani permintaan masuk disebut ProcessRequest. Harap dicatat bahwa prosedur ini tidak lengkap dan berisi komentar ekstensif yang harus ditambahkan ke kode.
5. Di bawah komentar Bangun umpan GeoRSS, tambahkan kode berikut untuk mulai membuat umpan GeoRSS yang akan dikembalikan oleh pengendali HTTP.
rssOutput.AppendLine(" rssOutput.AppendLine("xmlns:georss='http://www.georss.org/georss'") rssOutput.AppendLine("xmlns:gml='http://www.opengis.net/gml '>") rssOutput.AppendLine("") rssOutput.AppendLine("Lokasi Toko") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("SQL Server") rssOutput.AppendLine("")
6. Di bawah komentar Buka koneksi ke database, tambahkan kode berikut.
sqlConn.Buka()
7. Di bawah komentar Gunakan proc tersimpan GetStoresGML untuk mendapatkan semua toko secara default, tambahkan kode berikut.
spName = "GetStoresGML"
Catatan: Secara default, permintaan ke pengendali HTTP ini memanggil prosedur tersimpan GetStoresGML dan mengembalikan umpan GeoRSS yang berisi semua penyimpanan.
8. Di bawah komentar Jika parameter searchFrom disediakan, gunakan GetNearbyStores dan tambahkan koordinat lintang dan bujur yang disediakan sebagai parameter, tambahkan kode berikut.
Redupkan searchFrom As String = konteks.Request.QueryString("SearchFrom") Jika Tidak searchFrom Tidak Ada Apa-apa Maka spName = "GetNearbyStoresGML" Redupkan latLong() As String = Split(searchFrom, ",", 2) cmd.Parameters.Add(New SqlParameter("Lat", latLong(0))) cmd.Parameters.Add(New SqlParameter("Long", latLong(1))) Berakhir Jika
Catatan: Jika permintaan berisi parameter bernama SearchFrom (dengan asumsi permintaan berisi sepasang koordinat lintang dan bujur yang dipisahkan koma), pengendali akan mengekstrak nilai lintang dan bujur dari parameter ini dan menggunakan prosedur tersimpan GetNearbyStoresGML untuk mengembalikan GeoRSS feed berisi Toko dalam radius 100 km dari titik pencarian yang diminta.
9. Di bawah komentar Tentukan nama prosedur tersimpan sebagai teks perintah, tambahkan kode berikut.
cmd.CommandText = spNama
10. Di bawah komentar Buat elemen untuk baris ini, tambahkan kode berikut untuk membuat tag untuk setiap baris pada hasil prosedur tersimpan.
rssOutput.AppendLine("")
11. Di bawah komentar Gunakan kolom 0 dan 1 untuk judul dan deskripsi, tambahkan kode berikut untuk membuat ", geomRdr.GetValue(0))) berdasarkan data yang dikembalikan oleh prosedur tersimpan.
rssOutput.AppendLine(String.Format("{0}", _ geomRdr.GetValue(1)))
12. Di bawah komentar Tambahkan elemen, tambahkan kode berikut untuk membuat elemen untuk entri ini.
rssOutput.AppendLine("")
13. Di bawah komentar Dapatkan instance geografi GML dari kolom 2, tambahkan kode berikut untuk mengambil data GML dari hasil prosedur tersimpan.
gml = geomRdr.GetValue(2).ToString()
14. Di bawah komentar Tambahkan elemen ke XML keluaran, tambahkan kode berikut untuk menambahkan data GML ke umpan GeoRSS.
rssOutput.AppendLine(gml)
15. Di bawah komentar Close and elements, tambahkan kode berikut.
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. Di bawah komentar Tutup dokumen dan kirimkan sebagai respons, tambahkan kode berikut untuk melengkapi umpan GeoRSS dan mengirimkannya ke pemohon.
rssOutput.Append("") konteks.Respon.Tulis(rssOutput.ToString())
17. Simpan GeoRSSHandler.vb.
Daftarkan penangan HTTP
1. Di Solution Explorer, klik dua kali web.config untuk membukanya di editor.
2. Di bagian, di bawah komentar Daftarkan GeoRSSHandler untuk permintaan .georss, tambahkan XML berikut.
<tambahkan kata kerja = "*" path = "*.georss" type = "GeoRSSHandler" validasi = "false"/>
Catatan: Anda harus mendaftarkan penangan HTTP untuk ekstensi file tertentu sehingga Layanan Informasi Internet meneruskan permintaan untuk file ini ke penangan yang benar.
3. Simpan web.config.
Uji penangan HTTP
1. Di Solution Explorer, klik file proyek situs web yang terletak di akar pohon, lalu tekan F4 untuk melihat propertinya.
2. Harap perhatikan atribut nomor port.
3. Pada menu Situs, klik Opsi Peluncuran.
4. Pilih Launch URL, masukkan URL berikut (ganti port dengan nilai atribut nomor port website), dan klik OK.
http://localhost:/storefindersite/test.georss
5. Pada menu Debug, klik Mulai eksekusi tanpa debugging.
6. Saat Microsoft Internet Explorer ® terbuka, lihat halaman yang berisi RSS feed untuk nama toko.
7. Di Internet Explorer, klik kanan di mana saja pada halaman web, lalu klik Lihat Sumber untuk membuka file sumber halaman tersebut di Notepad. Perhatikan bahwa sumber laman ini adalah umpan GeoRSS yang dihasilkan oleh pengendali HTTP yang Anda buat sebelumnya.
8. Tutup Buku Catatan.
9. Di bilah alamat di Internet Explorer, tambahkan string kueri berikut ke URL dan tekan Enter.
?SearchFrom=34.000000,-118.000000
10. Verifikasi bahwa feed GeoRSS yang dihasilkan berisi area pencarian dan semua penyimpanan di dalamnya.
11. Tutup Internet Explorer