OPRAVA: Ukládání katalogu do mezipaměti se nepoužívá, když používáte třídu CategoryConfiguration společně s vlastností CategoryConfiguration.ChildProducts.SqlWhereClause v Commerce Server 2009

Platí pro
Commerce Server 2009 Enterprise Commerce Server 2009 Standard

Příznaky

Vezměte v úvahu následující scénář:

  • Ukládání do mezipaměti povolíte v systému katalogů v souboru Web.config pro web, na kterém běží Microsoft Commerce Server 2009.
  • Třídu CategoryConfiguration můžete použít k určení předem načtené konfigurace Category objektu.
  • Vlastnost LoadChildProducts nastavíte na hodnotu True.
  • Klauzuli filtrování zadáte ve vlastnosti CategoryConfiguration.ChildProducts.SqlWhereClause .
  • Metodu GetCategory nebo metodu GetProduct použijete k načtení podřízených kategorií nebo podřízených produktů objektu CategoryConfiguration.

V tomto scénáři nemusí být mezipaměť katalogu použita k načtení podřízených kategorií a podřízených produktů. Proto může při vysokém zatížení dojít ke snížení výkonu webu.

Máte například web, který používá ukázkový katalog AdventureWorks. Následující příklad kódu spustíte k načtení zobrazovaného názvu objektu Category. V tomto příkladu se kód dotazuje na data z databáze Catalog pokaždé, i když je povoleno ukládání katalogu do mezipaměti.

CategoryConfiguration categoryConfiguration = new CategoryConfiguration();

  categoryConfiguration.LoadChildProducts = true;

  categoryConfiguration.ChildProducts.SqlWhereClause = "[IsVisible] = 1";

  var catalogContext = CommerceContext.Current.CatalogSystem.CatalogContext;

  Category category = catalogContext.GetCategory("AdventureWorks Catalog", "SleepingBags");

  Response.Write(category.DisplayName);

Poznámka: Ke stejnému problému dochází při použití metody GetProduct v příkladu kódu.

Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky, ať už vyjádřené nebo předpokládané. To zahrnuje, ale není omezeno na, předpokládané záruky prodejnosti nebo vhodnosti pro konkrétní účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předváděn, a s nástroji, které se používají k vytváření a ladění procedur. Pracovníci technické podpory Microsoftu vám můžou pomoct vysvětlit funkčnost konkrétního postupu. Tyto příklady však neupraví za účelem poskytnutí dalších funkcí ani nevytvoří procedury, které by splňovaly vaše specifické požadavky.

Řešení

Chcete-li tento problém vyřešit, použijte tuto opravu hotfix na serveru, na kterém běží Commerce Server 2009.

Po použití této opravy hotfix je povoleno ukládání podřízených produktů a podřízených kategorií do mezipaměti katalogu do mezipaměti, pokud použijete filtr "whereClause". Ve výchozím nastavení každý dotaz, který obsahuje klauzuli where, obchází mezipaměť katalogu. Chcete-li povolit ukládání do mezipaměti, musíte přidat oddíl "cacheFilter" a správně jej nakonfigurovat v souboru Web.config pro web Commerce Server.

Oddíl "cacheFilter" poskytuje následující atributy:

  • Atribut "whereClause".
  • Atribut exactMatch.

Pomocí jedné z následujících možností můžete spravovat, která klauzule where se má uložit do mezipaměti:

  • Zadejte celou where klauzuli v atributu "whereClause" a pak nastavte atribut "exactMatch" na True.
  • Zadejte klauzuli where v atributu "whereClause" a pak nastavte atribut "exactMatch" na False. To umožňuje Commerce Server ukládat do mezipaměti jakoukoli where klauzuli, která má částečnou shodu s tím, co bylo uvedeno v konfiguračním souboru.

Poznámka: Atribut "exactMatch" je volitelný. Ve výchozím nastavení, pokud vynecháte atribut "exactMatch", je nastaven na hodnotu True.

Následující příklad ukazuje, jak upravit konfigurační oddíl. Tento příklad také ukazuje použití atributu "exactMatch".

<catalog>

<catalogSets .../>

      <cache enable="true">

        <cacheFilter>

          <add whereClause="WHERE [ListPrice] between 0 AND 1000'" />

          <add whereClause="isActive" exactMatch="False" />

          ... 

        </cacheFilter> 

      </cache> 

</catalog>

Pravidla pro definování hodnoty atributu "whereClause" v oddílu cacheFilter

Poznámka: Hodnota atributu "whereCase" v oddílu "cacheFilter" je řetězcově shodná. Je třeba například dodržovat následující pravidla:

  • Mezi klíčovými slovy hodnoty atributu "whereClause" je povolena pouze jedna mezera. Příklady:

    • whereClause="ProductID like 'AW2%'" není spárováno
    • whereClause="ProductID like 'AW2%'" je spárováno
  • Na začátku nebo na konci hodnoty atributu "whereClause" nejsou povoleny žádné mezery, pokud existuje více hodnot klíčových slov. Příklady:

    • whereClause=" ProductID like 'AW2%'" není spárováno
    • whereClause="ProductID like 'AW2%' " se neshoduje
  • Dílčí hodnota s jednoduchými uvozovkami v rámci atributu "whereClause" musí být plně řetězcově shodná. Předpokládejme například, že vyhledávací dotaz je "IDProduktu jako 'AW2%'"; V tomto případě:

    • whereClause="IDProduktu jako 'AW2' není shoda
    • whereClause="IDProduktu jako 'AW2%' je shoda.

      

Další informace o této opravě hotfix

Informace o opravě hotfix

Podporovanou opravu hotfix poskytuje Microsoft. Tato oprava hotfix je však určena pouze k opravě problému popsaného v tomto článku. Tuto opravu hotfix použijte pouze v systémech, které se potýkají s potížemi popsanými v tomto článku. Tuto opravu hotfix je možné dále otestovat. Pokud se vás tedy tento problém vážně netýká, doporučujeme počkat na další aktualizaci softwaru, která obsahuje tuto opravu hotfix.

Pokud je oprava hotfix dostupná ke stažení, je k dispozici část "Oprava hotfix ke stažení" v horní části tohoto článku znalostní báze Knowledge Base. Pokud se tato část nezobrazí, obraťte se na služby zákazníkům a podporu společnosti Microsoft a požádejte o opravu hotfix.

Poznámka: Pokud se vyskytnou další problémy nebo je vyžadováno jakékoli řešení potíží, budete pravděpodobně muset vytvořit samostatnou žádost o služby. Další dotazy a problémy týkající se podpory, které se netýkají této konkrétní opravy hotfix, podléhají běžným sazbám za podporu. Úplný seznam telefonních čísel zákaznických služeb a podpory společnosti Microsoft nebo vytvoření samostatné žádosti o služby naleznete na následujícím webu společnosti Microsoft:

http://support.microsoft.com/contactus/?ws=support Poznámka: Formulář "Hotfix download available" (K dispozici je ke stažení opravy hotfix) zobrazuje jazyky, pro které je oprava hotfix k dispozici. Pokud svůj jazyk nevidíte, je to proto, že pro tento jazyk není k dispozici oprava hotfix.

Požadavky

Chcete-li nainstalovat tuto opravu hotfix, musíte mít nainstalovaný Commerce Server 2009 nebo Commerce Server 2009 Template Pack pro SharePoint 2010.

Informace o restartování

Po instalaci této opravy hotfix není nutné restartovat počítač. Po instalaci této opravy hotfix je však nutné Internetovou informační službu (IIS) restartovat. Chcete-li restartovat službu IIS, otevřete okno příkazového řádku, zadejte následující příkaz a stiskněte klávesu ENTER:

iisreset /restartNote Tato možnost zastaví všechny spuštěné služby IIS a poté je restartuje.

Informace o souborech

Anglická verze této opravy hotfix má následující (nebo pozdější) atributy souborů. Data a časy pro tyto soubory jsou uvedeny v čase UTC (Coordinated Universal Time). Při zobrazení informací o souboru jsou převedeny na místní čas. Rozdíl mezi místním časem a časem UTC naleznete na kartě Časové pásmo na panelu Datum a čas v okně Ovládací panely.

Pro všechny podporované verze Commerce Server 2009

Název souboru Verze souboru Velikost souboru Datum Čas Platforma
Cs2009hotfixhelper.exe 6.0.4171.27 13,080 18. srpna 2010 11:11 x86
Microsoft.catalogserver.dll 6.0.4171.27 756,520 18. srpna 2010 11:11 x86
Microsoft.commerceserver.runtime.dll 6.0.4171.27 850,744 18. srpna 2010 11:11 x86
Microsoft.commerceserver.catalog.dll 6.0.4171.27 961,336 18. srpna 2010 11:35 x86

Pro všechny podporované verze Commerce Server 2009 Template Pack pro SharePoint 2010

Název souboru Verze souboru Velikost souboru Datum Čas Platforma
Cspatchhelper.exe 6.0.4171.504 17,168 30. listopadu 2010 08:16 x86
Microsoft.catalogserver.dll 6.0.4171.504 756,520 30. listopadu 2010 08:16 x86
Microsoft.commerceserver.runtime.dll 6.0.4171.504 850,744 30. listopadu 2010 08:16 x86
Microsoft.commerceserver.catalog.dll 6.0.4171.504 961,336 29-Listopad-2010 14:13 x86

Stav

Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.

Další informace

Během a po odinstalaci opravy hotfix mějte na paměti následující dva body:

  1. Může se zobrazit dialogové okno. Dialogové okno vás upozorní, že před pokračováním v procesu odinstalace je potřeba některé aplikace zavřít. V takové situaci přijměte výchozí výběr a pokračujte kliknutím na tlačítko OK.
  2. Po odinstalaci opravy hotfix pro Commerce Server 2009 se v nabídce Start mohou objevit Commerce Server 2009 i Commerce Server 2007. V takové situaci můžete ignorovat nebo odstranit položku nabídky Commerce Server 2007.

Další informace naleznete na následujících webech služby MSDN (web MSDN (Microsoft Developer Network)):

katalog Element
        
         Třída CategoryConfiguration
        
         GetCategory – metoda
        
Chcete-li stáhnout balíček šablon Commerce Server 2009 pro SharePoint 2010, navštivte následující web společnosti Microsoft:

http://www.microsoft.com/download/en/details.aspx?FamilyID=CFD0C459-5A11-4DE6-9085-52D59E8D38E6&displaylang=en