2010-07-12 5 views
0

J'ai une page d'administration dans asp.net qui ajoute des données à une base de données. Cette base de données est disponible en tant que chaîne JSON pour les sites Web externes. Cependant, comme il s'agit de beaucoup de données, les sites Web externes mettent ces données en cache localement. Je veux être en mesure de faire un ping sur les sites Web externes pour leur faire savoir que les données ont changé afin qu'ils puissent consulter leur cache. Je pense que je peux configurer un gestionnaire ASHX qui reçoit un paramètre lui indiquant quelles données ont changé, afin qu'il puisse à la fois supprimer ces données et les actualiser.Appelez une page asp.net (ashx handler) à partir d'une autre page asp.net

La seule partie dont je ne suis pas sûr est la meilleure façon d'appeler cette page externe à partir de ma page d'administration. Est-ce que je fais juste une demande de WebRequest régulière et rejette le résultat? ou existe-t-il un moyen plus simple d'appeler une page à partir du code lorsque vous n'avez pas besoin de la réponse?

Fondamentalement, je veux juste "ping" cette page, donc il sait qu'il a besoin de rafraîchir.

merci!

+0

Cela me ressemble comme un travail pour un service Web. Je suppose que vous pouvez utiliser un ashx, mais asp.net supporte déjà l'appel de services Web. – Greg

Répondre

1

Vous pouvez avoir un indicateur mis en place dans la base de données. Cela transformerait cela en une tâche beaucoup plus simple.

Si aucune alternative existe, vous pouvez utiliser la classe WebClient:

using (var wc = new WebClient()) 
{ 
    wc.DownloadString(address); 
} 
+0

Je suis d'accord. c'est au client de vérifier les mises à jour/l'invalidation du cache. –

+0

Je suis normalement d'accord, mais il y a une chaîne JSON pour chaque jour de l'année (c'est ainsi que les données sont mises en cache), donc je ne peux pas demander au site externe de rechercher un drapeau sur chaque requête. l'approche la plus pratique semble être d'envoyer une requête ping au client et de lui faire savoir que les données ont expiré. Ce n'est pas idéal mais c'est la meilleure façon de l'automatiser ... – SelAromDotNet

2

Si vous voulez juste appeler la page à distance, vous pouvez utiliser la classe WebRequest. http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

WebRequest request = WebRequest.Create("http://my.domain.ext/page.ashx"); 
using(WebResponse response = request.GetResponse()) { 
    response.Close(); 
} 

Si vous voulez faire des choses plus avancées un webservice serait plus approprié.

Questions connexes