Dans cet exercice, vous allez implémenter un gestionnaire HTTP dans une application Web ASP.NET pour renvoyer un flux GeoRSS. GeoRSS est une norme permettant d'inclure des données géospatiales dans les flux RSS. Elle définit un format spécifique appelé GeoRSS GML pour inclure des données au format GML dans les flux. Les applications clientes peuvent s'abonner aux flux GeoRSS de la même manière que les flux RSS classiques. Les données au format GeoRSS peuvent être facilement importées dans le contrôle Microsoft Virtual Earth VEMap.
Remarque : Vous pouvez copier le code utilisé dans cet exercice à partir de la page Web terminée dans C:SQLHOLSSpatial et VESolutionStoreFinderSite.
Implémenter des gestionnaires HTTP
1. Démarrez Microsoft Visual Studio 2008.
2. Dans le menu Fichier, cliquez sur Ouvrir le site Web, puis ouvrez le site Web C:SQLHOLsSpatial et VEStarterStoreFinderSite.
3. Dans l'Explorateur de solutions, développez App_Code, puis double-cliquez sur GeoRSSHandler.vb pour l'ouvrir dans l'éditeur de code.
Remarque : Un gestionnaire HTTP est un module de code qui gère les requêtes HTTP adressées à une application Web. Les requêtes adressées aux applications Web ASP.NET sont généralement gérées par le gestionnaire de requêtes ASP.NET par défaut, mais vous pouvez créer des gestionnaires personnalisés pour des extensions de fichiers spécifiques. Dans cet exemple, vous allez implémenter un gestionnaire qui gérera les demandes de fichiers avec une extension .georss.
4. Vérifiez le code existant. Le processus qui gère les demandes entrantes s'appelle ProcessRequest. Veuillez noter que cette procédure est incomplète et contient de nombreux commentaires qui doivent être ajoutés au code.
5. Sous le commentaire Créer le flux GeoRSS, ajoutez le code suivant pour commencer à créer le flux GeoRSS qui sera renvoyé par le gestionnaire 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("Emplacements des magasins") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("SQL Server") rssOutput.AppendLine("")
6. Sous le commentaire Ouvrir une connexion à la base de données, ajoutez le code suivant.
sqlConn.Open()
7. Sous le commentaire Utiliser la procédure stockée GetStoresGML pour obtenir tous les magasins par défaut, ajoutez le code suivant.
spName = "GetStoresGML"
Remarque : Par défaut, les requêtes adressées à ce gestionnaire HTTP appellent la procédure stockée GetStoresGML et renvoient un flux GeoRSS contenant tous les magasins.
8. Sous le commentaire Si un paramètre searchFrom est fourni, utilisez GetNearbyStores et ajoutez les coordonnées lat et lon fournies en tant que paramètres, ajoutez le code suivant.
Dim searchFrom As String = context.Request.QueryString("SearchFrom") Si ce n'est pas searchFrom n'est rien alors 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
Remarque : Si la requête contient un paramètre nommé SearchFrom (en supposant qu'elle contienne une paire de coordonnées de latitude et de longitude séparées par des virgules), le gestionnaire extraira les valeurs de latitude et de longitude de ce paramètre et utilisera la procédure stockée GetNearbyStoresGML pour renvoyer un GeoRSS. flux contenant des commerces dans un rayon de 100 km du point de recherche demandé.
9. Sous le commentaire Spécifiez le nom de la procédure stockée comme texte de commande, ajoutez le code suivant.
cmd.CommandText = spName
10. Sous le commentaire Créer un élément pour cette ligne, ajoutez le code suivant pour créer une balise pour chaque ligne dans le résultat de la procédure stockée.
rssOutput.AppendLine("")
11. Sous le commentaire Utiliser les colonnes 0 et 1 pour le titre et la description, ajoutez le code suivant pour créer ", geomRdr.GetValue(0))) en fonction des données renvoyées par la procédure stockée.
rssOutput.AppendLine(String.Format("{0}", _ geomRdr.GetValue(1)))
12. Sous le commentaire Ajouter un élément, ajoutez le code suivant pour créer un élément pour cette entrée.
rssOutput.AppendLine("")
13. Sous le commentaire Obtenir l'instance géographique GML de la colonne 2, ajoutez le code suivant pour récupérer les données GML du résultat de la procédure stockée.
gml = geomRdr.GetValue(2).ToString()
14. Sous le commentaire Ajouter les éléments au XML de sortie, ajoutez le code suivant pour ajouter des données GML au flux GeoRSS.
rssOutput.AppendLine(gml)
15. Sous le commentaire Close and elements, ajoutez le code suivant.
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. Sous le commentaire Fermez le document et envoyez-le en réponse, ajoutez le code suivant pour compléter le flux GeoRSS et envoyez-le au demandeur.
rssOutput.Append("") contexte.Response.Write(rssOutput.ToString())
17. Enregistrez GeoRSSHandler.vb.
Enregistrer le gestionnaire HTTP
1. Dans l'Explorateur de solutions, double-cliquez sur web.config pour l'ouvrir dans l'éditeur.
2. Dans la section, sous le commentaire Enregistrer le GeoRSSHandler pour les requêtes .georss, ajoutez le XML suivant.
<add verb="*" path="*.georss" type="GeoRSSHandler" validate="false"/>
Remarque : Vous devez enregistrer des gestionnaires HTTP pour des extensions de fichiers spécifiques afin que les services Internet (IIS) transmettent les demandes pour ces fichiers au gestionnaire approprié.
3. Enregistrez web.config.
Tester le gestionnaire HTTP
1. Dans l'Explorateur de solutions, cliquez sur le fichier de projet de site Web situé à la racine de l'arborescence, puis appuyez sur F4 pour afficher ses propriétés.
2. Veuillez faire attention à l'attribut du numéro de port.
3. Dans le menu Site, cliquez sur Options de lancement.
4. Sélectionnez URL de lancement, entrez l'URL suivante (remplacez le port par la valeur de l'attribut de numéro de port du site Web) et cliquez sur OK.
http://localhost:/storefindersite/test.georss
5. Dans le menu Déboguer, cliquez sur Démarrer l'exécution sans débogage.
6. Lorsque Microsoft Internet Explorer ® s'ouvre, affichez la page contenant le flux RSS du nom du magasin.
7. Dans Internet Explorer, cliquez avec le bouton droit n'importe où sur la page Web, puis cliquez sur Afficher la source pour ouvrir le fichier source de la page dans le Bloc-notes. Notez que la source de cette page est le flux GeoRSS généré par le gestionnaire HTTP que vous avez créé précédemment.
8. Fermez le Bloc-notes.
9. Dans la barre d'adresse d'Internet Explorer, ajoutez la chaîne de requête suivante à l'URL et appuyez sur Entrée.
?SearchFrom=34.000000,-118.000000
10. Vérifiez que le flux GeoRSS généré contient la zone de recherche et tous les magasins qu'elle contient.
11. Fermez Internet Explorer