2009-01-21 6 views
3

J'ai un service C# qui n'est pas une application ASP.NET, mais utilise une instance singleton de la classe HttpRuntime pour mettre en cache les éléments de son membre de cache. Le singleton est créé comme ceci:Définition du cache ASP.Net PrivateBytesLimit dans le service C#

static private System.Web.HttpRuntime _httpRuntime = new HttpRuntime(); 

Je veux définir son utilisation maximale de la mémoire si je le suivant dans le fichier de configuration de service.exe.config de l'application:

<configuration> 
<caching> 
    <cache privateBytesLimit= "50000000" privateBytesPollTime = "00:01:00"/> 
</caching> 
</configuration> 

Cela ne semble pas avoir un effet. Au lieu de le régler à 50 Mo, quand je regarde dans HttpRuntime.Cache.EffectivePrivateBytesLimit c'est 720 Mo.

Qu'est-ce que je fais mal?

+2

HttpRuntime.Cache est statique, alors qu'est-ce que vous gagnez en créant une nouvelle instance de HttpRuntime? – Constantin

Répondre

4

Vous n'utilisez pas l'élément de cache correct. Selon la documentation, la propriété EffectivePrivateBytesLimit peut être définie avec l'attribut privateBytesLimit du cache Element for caching (ASP.NET Settings Schema) element dans le fichier de configuration de l'application;

<configuration> 
    <system.web> 
    <caching> 
     <cache privateBytesLimit="10000000" privateBytesPollTime="00:01:00" /> 
    </caching> 
    </system.web> 
</configuration> 
+0

Ça a marché! Merci! –

Questions connexes