7
votes

Comment forcer httpwebrequest à utiliser le cache dans l'environnement ASP.NET?

Dans mon application ASP.NET J'utilise httpwebrequest pour rechercher des ressources externes que j'aimerais être mis en cache. Considérez le code suivant: xxx

httpwebrequest utilise c.-à-d. Cache, donc lorsque je l'exécute en tant qu'utilisateur normal (dans Tiny CMD Test App), les données sont mises en cache à % UserProfile% \ Paramètres locaux \ Fichiers Internet temporaires et les réponses suivantes sont en lecture du cache.

Je pensais que lorsque ce code est exécuté à l'intérieur de l'application ASP.NET, les données seront mises en cache sur ... \ aspnet \ Paramètres locaux \ Fichiers Internet temporaires Mais ce n'est pas et cache n'est jamais utilisé.

Qu'est-ce que je fais mal? Comment forcer httpwebrequest à utiliser le cache dans l'environnement ASP.NET?


3 commentaires

Quel compte est votre application ASP.NET fonctionnant sous? Le cache sera créé sous ce compte.


@feroze: L'application est exécutée sous le compte ASPNET et je connais le chemin des fichiers Internet temporaires de l'examen de l'environnement.Specialfolder.InternetCache. Le problème n'est pas que je ne sais pas où des entrées de cache sont créées mais elles ne sont pas créées du tout.


Pouvez-vous ajouter une ligne à fermer et à éliminer l'objet de réponse: resp.close (); et ensuite vérifier si vous rencontrez toujours des problèmes?


3 Réponses :


0
votes

Je pourrais me tromper, mais je soupçonnerais que httpwebrequest respecte les en-têtes de cache de la ressource, quel que soit vos désirs indiqués.

Vérifiez les en-têtes de réponse et assurez-vous que la ressource ne demande pas explicitement de ne pas être mise en cache.


1 commentaires

J'ai également soupçonné des en-têtes alors je construis une petite application CMD qui rend httpRequest à la même ressource. Dans l'application CMD, il est mis en cache. Et dans l'application ASP.NET, ce n'est pas le cas.



1
votes

Vous pouvez utiliser le cache manuellement dans votre code comme celui-ci: xxx

Vous pouvez utiliser cette méthode comme vous utiliseriez la mise en cache avec Web.config.


2 commentaires

Je finirai probablement à mettre en œuvre le cache personnalisé, mais j'espérais une solution simple "hors de la boîte" ...


Je pense qu'il n'y a pas de la boîte pour votre problème, mais cela ne devrait pas être un gros problème à mettre en œuvre.



1
votes

Je sais que c'est un vieux fil, mais une autre chose à considérer concernant ce problème est les paramètres de sécurité IE pour le compte d'utilisateur L'application ASP.NET est en cours d'exécution. Caching HTTP (CACHEPOLICY.LEVEL = Par défaut, HTTP Cacheable Resources) ne fonctionnait pas pour notre application tant que nous avons ajouté l'hôte distant à la liste des sites de confiance.

Cet article a été utile pour notre dépannage de cache: http://blogs.msdn.com/b/ieInternals/archive/2011/03/19/wininet-temporary-Internet-files-Cache-and-Explorer -Folder-View.aspx


0 commentaires