добавление значения в кеш, когда значения нет в кеше

Я хочу запрограммировать основные операции кэширования CRUD (создание нового объекта, его удаление, обновление...). Я начинаю с создания объекта и отображения его имени. Это мой код: (My cache name="default")

веб.конфигурация:

..........

<configuration>
<configSections>
<section name="dataCacheClient"
   type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
    Microsoft.ApplicationServer.Caching.Core,
    Version=1.0.0.0,  Culture=neutral,PublicKeyToken=31bf3856ad364e35" />
     </configSections>
     <dataCacheClient>
      <hosts>
        <host name="Amira-PC" cachePort="22233" />

        </hosts>
       </dataCacheClient>

         ......

Глобальный.asax.cs:

     using Microsoft.ApplicationServer.Caching;

      namespace AppFabricCachingTest{
        public class Global : System.Web.HttpApplication
         {
         public static string CacheFactoryName = "CacheFactory";
          void Application_Start(object sender, EventArgs e)
          {
        // Code qui s'exécute au démarrage de l'application


        var dcf = new DataCacheFactory();
        Application[CacheFactoryName] = dcf;
        DataCache myCache = dcf.GetCache("default");// cache name=mycache

        object myCachedItem = new Object();
        string myCachedItemKey = "MyCacheKey";
        myCache.Add(myCachedItemKey, myCachedItem);



     }
    .....

     `  

Site.Master.cs

       `  
        using Microsoft.ApplicationServer.Caching;

         namespace AppFabricCachingTest
       {
           public partial class SiteMaster : System.Web.UI.MasterPage
               {
           protected void Page_Load(object sender, EventArgs e)
              {

                }

    public string GetCachedName()
     {
       string name = null;
       string key ="MyCacheKey";

        var dcf = Application[Global.CacheFactoryName] as DataCacheFactory;

          if (dcf != null)
            {
    var cache = dcf.GetCache("default");
    name = cache.Get(key) as string;
    if (name == null)
    {
        name = "Windows Server App Fabric Cache ";
        cache.Put(key, name);

    }
    else
    {
        name += " From Cache!";

            }
             }
        else name = "dcf is NULL";
           return name;
       }

         }
     }

Сайт.Мастер:

 <body>
        <form runat="server">
             <div class="page">
                <div class="header">
                   <div class="title">
            <h1>
               <%= GetCachedName() %>
            </h1>
        </div>
            ...............

После запуска я всегда получал «DCF равен NULL», а не имя объекта. Любая идея, пожалуйста,

заранее спасибо


person Amira Manai    schedule 20.11.2011    source источник


Ответы (1)


Я думаю, что вам не хватает объявления другого объекта как части инициализации DataCacheFactory. DataCacheFactory не знает, откуда брать кеш кластера. Пожалуйста, попробуйте приведенный ниже код

Серверы DataCacheServerEndpoint[] = new DataCacheServerEndpoint[1]; серверы [0] = новая конечная точка DataCacheServerEndpoint ("localhost", 22233);

// Настройка конфигурации DataCacheFactory.

DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration(); factoryConfig.Servers = серверы;

// Создаем настроенный объект DataCacheFactory.

DataCacheFactory cacheFactory = new DataCacheFactory (factoryConfig);

person Dodi    schedule 13.12.2011