程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET中創建GeoRSS訂閱源

ASP.NET中創建GeoRSS訂閱源

編輯:.NET實例教程


在此練習中,您將在 ASP.Net Web 應用程序中實現 HTTP 處理程序以返回 GeoRSS 訂閱源。GeoRSS 是在 RSS 訂閱源中包含地理空間數據時所用的一個標准,它定義了一種名為 GeoRSS GML 的特定格式,用來在訂閱源中包含 GML 格式的數據。客戶端應用程序可以訂閱 GeoRSS 訂閱源,訂閱方式與訂閱常規 RSS 訂閱源相同。可以輕松地將 GeoRSS 格式的數據導入 Microsoft Virtual Earth VEMap 控件中。

注意:您可以從 C:\SQLHOLS\Spatial and VE\Solution\StoreFinderSite 中的完成的網站頁面復制此練習中所用的代碼。

實現 HTTP 處理程序

1. 啟動 Microsoft Visual Studio 2008。

2. 在文件菜單中,單擊打開網站,然後打開 C:\SQLHOLs\Spatial and VE\Starter\StoreFinderSite 網站。

3. 在解決方案資源管理器中,展開 App_Code,然後雙擊 GeoRSSHandler.vb 在代碼編輯器中打開它。

注意:HTTP 處理程序是一個代碼模塊,用於處理對 Web 應用程序的 HTTP 請求。通常由默認 ASP.NET 請求處理程序處理對 ASP.Net Web 應用程序的請求,但是您可以針對特定文件擴展名創建自定義處理程序。在本例中,您將實現一個將用於處理擴展名為 .georss 的文件的請求的處理程序。

4. 檢查現有的代碼。處理傳入請求的過程名為 ProcessRequest。請注意,此過程不完整,包含大量必須添加代碼的注釋。

5. 在注釋 Build the GeoRSS feed下,添加以下代碼,以開始構建將由 HTTP 處理程序返回的 GeoRSS 訂閱源。

rssOutput.AppendLine("  rssOutput.AppendLine("xmlns:georss='http://www.georss.org/georss'")  rssOutput.AppendLine("XMLns:gml='http://www.opengis.Net/gml'>")  rssOutput.AppendLine("")  rssOutput.AppendLine("Store Locations")  rssOutput.AppendLine("")  rssOutput.AppendLine("" + System.DateTime.Now + "")  rssOutput.AppendLine("")  rssOutput.AppendLine("SQL Server")  rssOutput.AppendLine("") 
6. 在注釋 Open a connection to the database下,添加以下代碼。

sqlConn.Open() 
7. 在注釋 Use the GetStoresGML stored proc to get all stores by default下,添加以下代碼。

spName = "GetStoresGML" 
注意:默認情況下,對此 HTTP 處理程序的請求將調用 GetStoresGML 存儲過程,並返回包含所有商店的 GeoRSS 訂閱源。

8. 在注釋If a searchFrom parameter is provided, use GetNearbyStores and add the provided lat and lon coordinates as parameters下,添加以下代碼。

Dim searchFrom As String = context.Request.QueryString("SearchFrom")  If Not searchFrom Is Nothing Then  spName = "GetNearbyStoresGML" Dim latLong() As String = Split(searchFrom, ",", 2)  cmd.Parameters.Add(New SqlParameter("Lat", latLong(0)))  cmd.Parameters.Add(New SqlParameter("Long", latLong(1)))  End If 
注意:如果請求包含名為 SearchFrom 的參數(假定它包含以逗號分隔的緯度和經度坐標對),處理程序將從此參數提取緯度和經度值,並使用 GetNearbyStoresGML 存儲過程返回 GeoRSS 訂閱源,訂閱源中包含請求的搜索點周圍方圓 100 km 范圍內的商店。

9. 在注釋 Specify the stored procedure name as the command text(將存儲過程名稱指定為命令文本)下,添加以下代碼。

cmd.CommandText = spName 
10. 在注釋 Create an element for this row下,添加以下代碼來為存儲過程的結果中的每一行都創建一個 標記。

rssOutput.AppendLine("") 
11. 在注釋 Use columns 0 and 1 for the title and description下,添加以下代碼以根據存儲過程返回的數據創建 ", geomRdr.GetValue(0)))

rssOutput.AppendLine(String.Format("{0}", _  geomRdr.GetValue(1))) 
12. 在注釋 Add a element下,添加以下代碼來為此條目創建 元素。
rssOutput.AppendLine("") 
13. 在注釋 Get the geography instance GML from column 2下,添加以下代碼,以從存儲過程結果中檢索 GML 數據。

gml = geomRdr.GetValue(2).ToString() 
14. 在注釋 Add the elements to the output XML下,添加以下代碼以向 GeoRSS 訂閱源添加 GML 數據。

rssOutput.AppendLine(gml) 
15. 在注釋 Close and elements下,添加以下代碼。

rssOutput.AppendLi
ne("")  rssOutput.AppendLine("") 
16. 在注釋 Close the document and send it as the response下,添加以下代碼以完成 GeoRSS 訂閱源並將其發送給請求人。

rssOutput.Append("")  context.Response.Write(rssOutput.ToString()) 
17. 保存 GeoRSSHandler.vb。

注冊 HTTP 處理程序

1. 在解決方案資源管理器中,雙擊 web.config 在編輯器中打開它。

2. 在 部分中,在注釋 Register the GeoRSSHandler for .georss requests下,添加以下 XML。

<add verb="*" path="*.georss" type="GeoRSSHandler" validate="false"/>

注意:您必須為特定文件擴展名注冊 HTTP 處理程序,以便 Internet Information Services 將針對這些文件的請求轉發到正確的處理程序。


3. 保存 web.config。

測試 HTTP 處理程序

1. 在解決方案資源管理器中,單擊位於樹的根目錄下的網站項目文件,然後按 F4 查看其屬性。

2. 請注意觀察端口號屬性。

3. 在網站菜單上,單擊啟動選項。

4. 選擇啟動 URL,輸入以下 URL(將 port 替換為網站的端口號屬性的值),然後單擊確定。

http://localhost:/storefindersite/test.georss

5. 在調試菜單上,單擊開始執行(不調試)。

6. 當 Microsoft Internet Explorer ® 打開時,查看包含商店名稱的 RSS 訂閱源的頁面。

7. 在 Internet Explorer 中,右鍵單擊該網頁的任意位置,然後單擊查看源文件以在記事本中打開該頁的源文件。請注意,該頁的源是您前面創建的 HTTP 處理程序生成的 GeoRSS 訂閱源。

8. 關閉記事本。

9. 在 Internet Explorer 中的地址欄中,將以下查詢字符串附加到 URL 後,然後按 Enter。

?SearchFrom=34.000000,-118.000000

10. 驗證生成的 GeoRSS 訂閱源包含搜索區域及其中的所有商店。

11. 關閉 Internet Explorer。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved