ในแบบฝึกหัดนี้ คุณจะใช้ตัวจัดการ HTTP ในเว็บแอปพลิเคชัน ASP.NET เพื่อส่งคืนฟีด GeoRSS GeoRSS เป็นมาตรฐานสำหรับการรวมข้อมูลเชิงพื้นที่ในฟีด RSS ซึ่งกำหนดรูปแบบเฉพาะที่เรียกว่า GeoRSS GML สำหรับการรวมข้อมูลในรูปแบบ GML ในฟีด แอปพลิเคชันไคลเอ็นต์สามารถสมัครรับฟีด GeoRSS ได้ในลักษณะเดียวกับฟีด RSS ทั่วไป ข้อมูลในรูปแบบ GeoRSS สามารถนำเข้าไปยังตัวควบคุม Microsoft Virtual Earth VEMap ได้อย่างง่ายดาย
หมายเหตุ: คุณสามารถคัดลอกโค้ดที่ใช้ในแบบฝึกหัดนี้ได้จากหน้าเว็บไซต์ที่เสร็จสมบูรณ์ใน C:SQLHOLSSpatial และ VESolutionStoreFinderSite
ใช้ตัวจัดการ HTTP
1. เริ่ม Microsoft Visual Studio 2008
2. บนเมนูไฟล์ คลิกเปิดเว็บไซต์ จากนั้นเปิดเว็บไซต์ C:SQLHOLsSpatial และ VEStarterStoreFinderSite
3. ใน Solution Explorer ให้ขยาย App_Code จากนั้นดับเบิลคลิก GeoRSSHandler.vb เพื่อเปิดในตัวแก้ไขโค้ด
หมายเหตุ: ตัวจัดการ HTTP คือโมดูลโค้ดที่จัดการคำขอ HTTP ไปยังเว็บแอปพลิเคชัน โดยทั่วไปคำขอไปยังแอปพลิเคชันเว็บ ASP.NET จะถูกจัดการโดยตัวจัดการคำขอ ASP.NET เริ่มต้น แต่คุณสามารถสร้างตัวจัดการแบบกำหนดเองสำหรับนามสกุลไฟล์เฉพาะได้ ในตัวอย่างนี้ คุณจะใช้ตัวจัดการที่จะจัดการคำขอไฟล์ที่มีนามสกุล .georss
4. ตรวจสอบรหัสที่มีอยู่ กระบวนการที่จัดการคำขอที่เข้ามาเรียกว่า ProcessRequest โปรดทราบว่าขั้นตอนนี้ไม่สมบูรณ์และมีความคิดเห็นมากมายที่ต้องเพิ่มลงในโค้ด
5. ใต้ความคิดเห็น สร้างฟีด GeoRSS เพิ่มโค้ดต่อไปนี้เพื่อเริ่มสร้างฟีด GeoRSS ที่ตัวจัดการ 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("ที่ตั้งร้านค้า") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("SQL Server") rssOutput.AppendLine("")
6. ใต้คอมเม้นท์ Open a Connection to the Database ให้เพิ่มโค้ดต่อไปนี้
sqlConn.เปิด()
7. ใต้ความคิดเห็น ใช้ GetStoresGML ที่เก็บไว้ proc เพื่อรับร้านค้าทั้งหมดตามค่าเริ่มต้น ให้เพิ่มโค้ดต่อไปนี้
spName = "GetStoresGML"
หมายเหตุ: ตามค่าเริ่มต้น คำขอที่ส่งไปยังตัวจัดการ HTTP นี้เรียกใช้ขั้นตอนการจัดเก็บ GetStoresGML และส่งคืนฟีด GeoRSS ที่มีร้านค้าทั้งหมด
8. ใต้ความคิดเห็น หากมีการระบุพารามิเตอร์ searchFrom ให้ใช้ GetNearbyStores และเพิ่มพิกัด lat และ lon ที่ให้มาเป็นพารามิเตอร์ ให้เพิ่มโค้ดต่อไปนี้
Dim searchFrom As String = context.Request.QueryString("SearchFrom") ถ้าไม่ searchFrom ก็ไม่มีอะไรแล้ว spName = "GetNearbyStoresGML" Dim latLong() As String = Split(searchFrom, ",", 2) cmd.Parameters.Add(New SqlParameter("Lat", latLong(0))) cmd.Parameters.Add(SqlParameter ใหม่ ("Long", latLong(1))) สิ้นสุดถ้า
หมายเหตุ: หากคำขอมีพารามิเตอร์ชื่อ SearchFrom (สมมติว่ามีคู่พิกัดละติจูดและลองจิจูดที่คั่นด้วยเครื่องหมายจุลภาค) ตัวจัดการจะแยกค่าละติจูดและลองจิจูดออกจากพารามิเตอร์นี้ และใช้ขั้นตอนการจัดเก็บ GetNearbyStoresGML เพื่อส่งคืน GeoRSS ฟีดที่มีร้านค้าภายในรัศมี 100 กม. จากจุดค้นหาที่ร้องขอ
9. ใต้ความคิดเห็น ระบุชื่อกระบวนงานที่เก็บไว้เป็นข้อความคำสั่ง ให้เพิ่มโค้ดต่อไปนี้
cmd.CommandText = spName
10. ใต้ความคิดเห็น สร้างองค์ประกอบสำหรับแถวนี้ ให้เพิ่มโค้ดต่อไปนี้เพื่อสร้างแท็กสำหรับแต่ละแถวตามผลลัพธ์ของกระบวนงานที่เก็บไว้
rssOutput.AppendLine("")
11. ใต้ความคิดเห็น ใช้คอลัมน์ 0 และ 1 สำหรับชื่อและคำอธิบาย ให้เพิ่มโค้ดต่อไปนี้เพื่อสร้าง ", geomRdr.GetValue(0))) ตามข้อมูลที่ส่งคืนโดยกระบวนงานที่เก็บไว้
rssOutput.AppendLine(String.Format("{0}", _ geomRdr.GetValue(1)))
12. ใต้ความคิดเห็น Add a element ให้เพิ่มโค้ดต่อไปนี้เพื่อสร้างองค์ประกอบสำหรับรายการนี้
rssOutput.AppendLine("")
13. ใต้ความคิดเห็น รับอินสแตนซ์ทางภูมิศาสตร์ GML จากคอลัมน์ 2 ให้เพิ่มโค้ดต่อไปนี้เพื่อดึงข้อมูล GML จากผลลัพธ์ของกระบวนงานที่เก็บไว้
gml = geomRdr.GetValue(2).ToString()
14. ใต้ความคิดเห็น เพิ่มองค์ประกอบลงในเอาต์พุต XML ให้เพิ่มโค้ดต่อไปนี้เพื่อเพิ่มข้อมูล GML ลงในฟีด GeoRSS
rssOutput.AppendLine(gml)
15. ใต้คอมเม้นท์ Close and element ให้เพิ่มโค้ดต่อไปนี้
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. ใต้ความคิดเห็น ปิดเอกสารและส่งเป็นการตอบกลับ เพิ่มโค้ดต่อไปนี้เพื่อกรอกฟีด GeoRSS และส่งไปยังผู้ร้องขอ
rssOutput.Append("") context.Response.Write(rssOutput.ToString())
17. บันทึก GeoRSSHandler.vb
ลงทะเบียนตัวจัดการ HTTP
1. ใน Solution Explorer คลิกสองครั้งที่ web.config เพื่อเปิดในตัวแก้ไข
2. ในส่วนนี้ ใต้ความคิดเห็น ลงทะเบียน GeoRSSHandler สำหรับคำขอ .georss ให้เพิ่ม XML ต่อไปนี้
<เพิ่มกริยา = "*" path = "*.georss" type = "GeoRSSHandler" ตรวจสอบ = "false"/>
หมายเหตุ: คุณต้องลงทะเบียนตัวจัดการ HTTP สำหรับนามสกุลไฟล์เฉพาะเพื่อให้ Internet Information Services ส่งต่อคำขอสำหรับไฟล์เหล่านี้ไปยังตัวจัดการที่ถูกต้อง
3. บันทึก web.config
ทดสอบตัวจัดการ HTTP
1. ใน Solution Explorer คลิกไฟล์โครงการเว็บไซต์ซึ่งอยู่ที่รากของแผนผัง จากนั้นกด F4 เพื่อดูคุณสมบัติ
2. โปรดใส่ใจกับแอตทริบิวต์หมายเลขพอร์ต
3. บนเมนูไซต์ คลิกตัวเลือกการเปิดตัว
4. เลือก Launch URL ป้อน URL ต่อไปนี้ (แทนที่พอร์ตด้วยค่าของแอตทริบิวต์หมายเลขพอร์ตของเว็บไซต์) และคลิกตกลง
http://localhost:/storefindersite/test.georss
5. บนเมนูดีบัก คลิกเริ่มดำเนินการโดยไม่ต้องดีบัก
6. เมื่อ Microsoft Internet Explorer ® เปิดขึ้น ให้ดูหน้าที่มีฟีด RSS สำหรับชื่อร้านค้า
7. ใน Internet Explorer คลิกขวาที่ใดก็ได้บนเว็บเพจ จากนั้นคลิก View Source เพื่อเปิดไฟล์ต้นฉบับสำหรับเพจใน Notepad โปรดทราบว่าแหล่งที่มาของหน้านี้คือฟีด GeoRSS ที่สร้างโดยตัวจัดการ HTTP ที่คุณสร้างไว้ก่อนหน้านี้
8. ปิดแผ่นจดบันทึก
9. ในแถบที่อยู่ใน Internet Explorer ให้เพิ่มสตริงการสืบค้นต่อไปนี้ต่อท้าย URL แล้วกด Enter
?ค้นหาจาก=34.000000,-118.000000
10. ตรวจสอบว่าฟีด GeoRSS ที่สร้างขึ้นมีพื้นที่การค้นหาและร้านค้าทั้งหมดอยู่ในนั้น
11. ปิด Internet Explorer