SOLUTION : la mise en cache du catalogue n’est pas utilisée lorsque vous utilisez la classe CategoryConfiguration conjointement avec la propriété CategoryConfiguration. ChildProducts. SqlWhereClause dans Commerce Server 2009

S’applique à : Commerce Server 2009 EnterpriseCommerce Server 2009 Standard

Symptômes


Prenons l’exemple du scénario suivant :
  • Vous pouvez activer la mise en cache dans le système de catalogue du fichier Web. config pour un site Web qui exécute Microsoft Commerce Server 2009.
  • Vous utilisez la classe CategoryConfiguration pour spécifier la configuration préchargée d’un objet Category .
  • Vous définissez la propriété LoadChildProducts sur true.
  • Vous spécifiez une clause de filtrage dans la propriété CategoryConfiguration. ChildProducts. SqlWhereClause .
  • Vous utilisez la méthode GetCategory ou la méthode GetProduct pour récupérer des catégories filles ou des produits enfants de l’objet CategoryConfiguration .
Dans ce scénario, la mise en cache du catalogue ne doit pas être utilisée pour récupérer les catégories et produits enfants. Par conséquent, il est possible que le site Web subisse une diminution des performances en cas de charge élevée. Par exemple, vous disposez d’un site Web qui utilise le catalogue d’exemples AdventureWorks. L’exemple de code suivant permet de récupérer le nom d’affichage d’un objet Category . Dans cet exemple, le code interroge les données de la base de données de catalogue chaque fois que la mise en cache du catalogue est activée.
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);
Remarque Ce même problème se produit lorsque vous utilisez la méthode GetProduct dans l’exemple de code. Microsoft fournit des exemples de programmation uniquement à des fins d’illustration, sans garantie, expresse ou implicite. Cela comprend, sans s’y limiter, les garanties implicites en matière de qualité marchande ou d’adéquation à un but particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous permettre d’expliquer les fonctionnalités d’une procédure particulière. Toutefois, ils ne pourront pas modifier ces exemples pour fournir des fonctionnalités ajoutées ou des procédures de construction qui répondent à vos exigences spécifiques.

Résolution


Pour résoudre ce problème, appliquez ce correctif au serveur qui exécute Commerce Server 2009. après avoir appliqué ce correctif, il est possible de mettre en cache des produits et des catégories enfants dans le cache du catalogue lorsque vous utilisez un filtre « whereClause ». Par défaut, toute requête qui contient une clause WHERE ignore le cache du catalogue. Pour activer la mise en cache, vous devez ajouter une section « cacheFilter » et la configurer correctement dans le fichier Web. config pour le site Web de Commerce Server. La section « cacheFilter » fournit les attributs suivants :
  • Attribut « whereClause ».
  • Attribut « exactMatch ».
Vous pouvez utiliser l’une des options suivantes pour gérer la clause WHERE à mettre en cache :
  • Spécifiez la clause WHERE entière dans l’attribut « whereClause », puis définissez l’attribut « exactMatch » sur true.
  • Spécifiez une clause WHERE dans l’attribut « whereClause », puis affectez à l’attribut « exactMatch » la valeur false. Cela permet à Commerce Server de mettre en cache n’importe quelle clause WHERE ayant une correspondance partielle avec ce qui a été spécifié dans le fichier de configuration.
Remarque L’attribut « exactMatch » est facultatif. Par défaut, si vous ne spécifiez pas l’attribut « exactMatch », il est défini sur true. L’exemple suivant montre comment modifier la section Configuration. Cet exemple montre également comment utiliser l’attribut « exactMatch ».
<catalog><catalogSets .../>      <cache enable="true">        <cacheFilter>          <add whereClause="WHERE [ListPrice] between 0 AND 1000'" />          <add whereClause="isActive" exactMatch="False" />          ...         </cacheFilter>       </cache> </catalog>
Les règles de définition de la valeur de l’attribut « WhereClause » dans la section cacheFilterindiquent que la valeur de l’attribut « WhereClause » dans la section « cacheFilter » est une correspondance de chaîne. Par exemple, les règles suivantes doivent être suivies :
  • Un seul espace blanc est autorisé entre les mots clés de la valeur d’attribut « whereClause ». Par exemple :
    • whereClause = "ProductID like’AW2% '" ne correspond pas
    • whereClause = "IDProduit comme’AW2% '" est associé
  • Aucun espace blanc n’est autorisé au début ou à la fin de la valeur d’attribut « whereClause » s’il existe une valeur de mots clés multiples. Par exemple :
    • whereClause = "ProductID like’AW2% '" ne correspond pas
    • whereClause = "ProductID like’AW2% '" ne correspond pas
  • La sous-valeur sous-cotée dans l’attribut « whereClause » doit être entièrement associée à une chaîne. Par exemple, supposons que la requête de recherche soit « ProductID like » AW2%»; dans le cas présent,
    • whereClause = "IDProduit comme’AW2 'ne correspond pas à une correspondance
    • whereClause = "IDProduit comme’AW2% 'est une correspondance

Plus d’informations sur ce correctif

Informations sur le correctif logiciel

Un correctif pris en charge est disponible auprès de Microsoft. Ce correctif est toutefois destiné à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant le problème décrit dans cet article. Ce correctif peut recevoir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, nous vous recommandons d’attendre la prochaine mise à jour logicielle qui contient ce correctif. Si le correctif est disponible en téléchargement, il existe une section « téléchargement du correctif disponible » en haut de cet article de la base de connaissances. Si cette section n’apparaît pas, contactez le service clientèle Microsoft et le support technique pour obtenir le correctif. Remarque Si des problèmes supplémentaires se produisent ou s’il est nécessaire de résoudre un problème, vous devrez peut-être créer une demande de service distincte. Les frais habituels du support technique s’appliquent aux autres questions et problèmes liés au support qui ne sont pas éligibles pour ce correctif particulier. Pour obtenir la liste complète des services clientèle Microsoft et des numéros de téléphone de support technique ou pour créer une demande de service distincte, visitez le site Web Microsoft suivant : Remarque Le formulaire « téléchargement du correctif disponible » affiche les langues pour lesquelles le correctif est disponible. Si votre langue n’est pas visible, cela signifie qu’aucun correctif n’est disponible pour cette langue.

Conditions préalables

Pour appliquer ce correctif, vous devez disposer de l’installation de SharePoint Server 2009 ou du Pack de modèles Commerce Server 2009 pour SharePoint 2010.

Informations sur le redémarrage

Vous n’avez pas besoin de redémarrer votre ordinateur après avoir appliqué ce correctif. Toutefois, vous devez redémarrer Internet Information Services (IIS) après avoir appliqué ce correctif. Pour redémarrer IIS, ouvrez une fenêtre d’invite de commandes, tapez la commande suivante, puis appuyez sur entrée :
iisreset/restart
Remarque Cette option arrête tous les services IIS en cours d’exécution, puis les redémarre.

Informations sur les fichiers

La version anglaise de ce correctif a les attributs de fichier (ou les attributs de fichier suivants) qui sont répertoriés dans le tableau suivant. Les date et heure de création de ces fichiers sont exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations des fichiers, les données sont converties en heure locale. Pour connaître le décalage entre l’heure UTC et l’heure locale, utilisez l’onglet Fuseau horaire dans l’élément Date et heure du Panneau de configuration.
Pour toutes les versions prises en charge de Commerce Server 2009
Nom du fichierVersion du fichierTaille du fichierDateHeurePlateforme
Cs2009hotfixhelper.exe6.0.4171.2713 08018-Aug-201011:11x86
Microsoft.catalogserver.dll6.0.4171.27756 52018-Aug-201011:11x86
Microsoft.commerceserver.runtime.dll6.0.4171.27850 74418-Aug-201011:11x86
Microsoft.commerceserver.catalog.dll6.0.4171.27961,33618-Aug-201011:35x86
Pour toutes les versions prises en charge du Pack de modèles 2009 de Commerce Server pour SharePoint 2010
Nom du fichierVersion du fichierTaille du fichierDateHeurePlateforme
Cspatchhelper.exe6.0.4171.50417 16830-Nov-201008:16x86
Microsoft.catalogserver.dll6.0.4171.504756 52030-Nov-201008:16x86
Microsoft.commerceserver.runtime.dll6.0.4171.504850 74430-Nov-201008:16x86
Microsoft.commerceserver.catalog.dll6.0.4171.504961,33629-Nov-201014:13x86

Statut


Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Informations supplémentaires


Prenez en considération les deux points suivants pendant et après la désinstallation du correctif :
  1. Une fenêtre de boîte de dialogue s’affiche. La fenêtre de la boîte de dialogue vous avertit que certaines applications doivent être fermées pour pouvoir continuer le processus de désinstallation. Dans ce cas, acceptez la sélection par défaut et cliquez sur le bouton OK pour continuer.
  2. Après avoir désinstallé le correctif pour Commerce Server 2009, Commerce Server 2009 et Commerce Server 2007 risquent de s’afficher dans le menu Démarrer. Dans ce cas, vous pouvez ignorer ou supprimer l’élément de menu Commerce Server 2007.
Pour plus d’informations, reportez-vous aux sites Web Microsoft Developer Network (MSDN) suivants :Pour télécharger le Pack de modèles Commerce Server 2009 pour SharePoint 2010, visitez le site Web de Microsoft suivant :