En este ejercicio, implementará un controlador HTTP en una aplicación web ASP.NET para devolver una fuente GeoRSS. GeoRSS es un estándar para incluir datos geoespaciales en canales RSS. Define un formato específico llamado GeoRSS GML para incluir datos con formato GML en canales. Las aplicaciones cliente pueden suscribirse a fuentes GeoRSS de la misma manera que a las fuentes RSS normales. Los datos en formato GeoRSS se pueden importar fácilmente al control VEMap de Microsoft Virtual Earth.
Nota: Puede copiar el código utilizado en este ejercicio desde la página del sitio web completa en C:SQLHOLSSpatial y VESolutionStoreFinderSite.
Implementar controladores HTTP
1. Inicie Microsoft Visual Studio 2008.
2. En el menú Archivo, haga clic en Abrir sitio web y luego abra el sitio web C:SQLHOLsSpatial y VEStarterStoreFinderSite.
3. En el Explorador de soluciones, expanda App_Code y luego haga doble clic en GeoRSSHandler.vb para abrirlo en el editor de código.
Nota: Un controlador HTTP es un módulo de código que maneja solicitudes HTTP a una aplicación web. Las solicitudes a aplicaciones web ASP.NET normalmente las maneja el controlador de solicitudes ASP.NET predeterminado, pero puede crear controladores personalizados para extensiones de archivo específicas. En este ejemplo, implementará un controlador que manejará solicitudes de archivos con una extensión .georss.
4. Verifique el código existente. El proceso que maneja las solicitudes entrantes se llama ProcessRequest. Tenga en cuenta que este procedimiento está incompleto y contiene comentarios extensos que deben agregarse al código.
5. Debajo del comentario Crear el feed GeoRSS, agregue el siguiente código para comenzar a crear el feed GeoRSS que devolverá el controlador 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("Ubicaciones de las tiendas") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("Servidor SQL") rssOutput.AppendLine("")
6. Debajo del comentario Abrir una conexión a la base de datos, agregue el siguiente código.
sqlConn.Open()
7. Debajo del comentario Utilice el proceso almacenado GetStoresGML para obtener todas las tiendas de forma predeterminada, agregue el siguiente código.
spName = "GetStoresGML"
Nota: De forma predeterminada, las solicitudes a este controlador HTTP llaman al procedimiento almacenado GetStoresGML y devuelven una fuente GeoRSS que contiene todas las tiendas.
8. Debajo del comentario Si se proporciona un parámetro searchFrom, use GetNearbyStores y agregue las coordenadas de latitud y longitud proporcionadas como parámetros, agregue el siguiente código.
Dim searchFrom As String = context.Request.QueryString("SearchFrom") Si no searchFrom no es nada, entonces 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
Nota: Si la solicitud contiene un parámetro llamado SearchFrom (suponiendo que contiene un par de coordenadas de latitud y longitud separadas por comas), el controlador extraerá los valores de latitud y longitud de este parámetro y utilizará el procedimiento almacenado GetNearbyStoresGML para devolver un GeoRSS. feed que contiene tiendas dentro de un radio de 100 km del punto de búsqueda solicitado.
9. Debajo del comentario Especifique el nombre del procedimiento almacenado como texto del comando, agregue el siguiente código.
cmd.CommandText = spName
10. Debajo del comentario Crear un elemento para esta fila, agregue el siguiente código para crear una etiqueta para cada fila en el resultado del procedimiento almacenado.
rssOutput.AppendLine("")
11. Debajo del comentario Utilice las columnas 0 y 1 para el título y la descripción, agregue el siguiente código para crear ", geomRdr.GetValue(0))) en función de los datos devueltos por el procedimiento almacenado.
rssOutput.AppendLine(String.Format("{0}", _ geomRdr.GetValue(1)))
12. Debajo del comentario Agregar un elemento, agregue el siguiente código para crear un elemento para esta entrada.
rssOutput.AppendLine("")
13. Debajo del comentario Obtenga el GML de la instancia geográfica de la columna 2, agregue el siguiente código para recuperar los datos GML del resultado del procedimiento almacenado.
gml = geomRdr.GetValue(2).ToString()
14. Debajo del comentario Agregue los elementos al XML de salida, agregue el siguiente código para agregar datos GML al feed GeoRSS.
rssOutput.AppendLine(gml)
15. Debajo del comentario Cerrar y elementos, agregue el siguiente código.
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. Debajo del comentario Cierre el documento y envíelo como respuesta, agregue el siguiente código para completar el feed GeoRSS y enviarlo al solicitante.
rssOutput.Append("") contexto.Response.Write(rssOutput.ToString())
17. Guarde GeoRSSHandler.vb.
Registrar controlador HTTP
1. En el Explorador de soluciones, haga doble clic en web.config para abrirlo en el editor.
2. En la sección, debajo del comentario Registre GeoRSSHandler para solicitudes .georss, agregue el siguiente XML.
<añadir verbo="*" ruta="*.georss" tipo="GeoRSSHandler" validar="false"/>
Nota: Debe registrar controladores HTTP para extensiones de archivos específicas para que Internet Information Services reenvíe las solicitudes de estos archivos al controlador correcto.
3. Guarde web.config.
Probar el controlador HTTP
1. En el Explorador de soluciones, haga clic en el archivo del proyecto del sitio web ubicado en la raíz del árbol y luego presione F4 para ver sus propiedades.
2. Preste atención al atributo del número de puerto.
3. En el menú Sitio, haga clic en Opciones de inicio.
4. Seleccione Iniciar URL, ingrese la siguiente URL (reemplace el puerto con el valor del atributo de número de puerto del sitio web) y haga clic en Aceptar.
http://localhost:/storefindersite/test.georss
5. En el menú Depurar, haga clic en Iniciar ejecución sin depurar.
6. Cuando se abra Microsoft Internet Explorer®, vea la página que contiene la fuente RSS para el nombre de la tienda.
7. En Internet Explorer, haga clic derecho en cualquier lugar de la página web y luego haga clic en Ver código fuente para abrir el archivo fuente de la página en el Bloc de notas. Tenga en cuenta que la fuente de esta página es el feed GeoRSS generado por el controlador HTTP que creó anteriormente.
8. Cierre el Bloc de notas.
9. En la barra de direcciones de Internet Explorer, agregue la siguiente cadena de consulta a la URL y presione Entrar.
?BuscarDesde=34.000000,-118.000000
10. Verifique que el feed GeoRSS generado contenga el área de búsqueda y todas las tiendas que contiene.
11. Cierra Internet Explorer