Fix: die Katalog Zwischenspeicherung wird nicht verwendet, wenn Sie die CategoryConfiguration-Klasse zusammen mit der CategoryConfiguration. ChildProducts. SqlWhereClause-Eigenschaft in Commerce Server 2009 verwenden.

Gilt für: Commerce Server 2009 EnterpriseCommerce Server 2009 Standard

Problembeschreibung


Stellen Sie sich folgendes Szenario vor:
  • Sie aktivieren die Zwischenspeicherung im Katalogsystem in der Datei Web. config für eine Website, auf der Microsoft Commerce Server 2009 ausgeführt wird.
  • Sie verwenden die CategoryConfiguration -Klasse, um die vorab geladene Konfiguration eines Category -Objekts anzugeben.
  • Die LoadChildProducts -Eigenschaft wird auf truefestgelegt.
  • Sie geben eine Filterklausel in der CategoryConfiguration. ChildProducts. SqlWhereClause -Eigenschaft an.
  • Sie verwenden die getCategory -Methode oder die GetProduct -Methode, um untergeordnete Kategorien oder untergeordnete Produkte des CategoryConfiguration -Objekts abzurufen.
In diesem Szenario kann die Katalog Zwischenspeicherung nicht verwendet werden, um die untergeordneten Kategorien und untergeordneten Produkte abzurufen. Daher kann es bei einer höheren Auslastung bei der Website zu einer verringerten Leistung kommen. Angenommen, Sie verfügen über eine Website, die den AdventureWorks-Beispielkatalog verwendet. Führen Sie das folgende Codebeispiel aus, um den Anzeigenamen eines Category -Objekts abzurufen. In diesem Beispiel fragt der Code jedes Mal Daten aus der Katalogdatenbank ab, obwohl die Katalog Zwischenspeicherung aktiviert ist.
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);
Hinweis Das gleiche Problem tritt auf, wenn Sie die GetProduct -Methode im Codebeispiel verwenden. Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder implizierte Gewährleistungen. Dazu gehören, aber nicht ausschließlich, die implizierten Garantien der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der vorgestellten Programmiersprache und den Tools vertraut sind, mit denen Verfahren erstellt und gedebuggt werden. Microsoft-Supporttechniker können Ihnen helfen, die Funktionalität einer bestimmten Prozedur zu erläutern. Diese Beispiele werden jedoch nicht geändert, um zusätzliche Funktionen bereitzustellen oder Verfahren zu erstellen, die ihren spezifischen Anforderungen entsprechen.

Fehlerbehebung


Um dieses Problem zu beheben, wenden Sie diesen Hotfix auf den Server an, auf dem Commerce Server 2009 ausgeführt wird. Nachdem Sie diesen Hotfix angewendet haben, ist das Zwischenspeichern von untergeordneten Produkten und untergeordneten Kategorien im Katalog Cache zulässig, wenn Sie einen "whereClause"-Filter verwenden. Standardmäßig umgeht jede Abfrage, die eine WHERE-Klausel enthält, den Katalog Cache. Um die Zwischenspeicherung zu aktivieren, müssen Sie einen Abschnitt "cacheFilter" hinzufügen und ihn in der Datei Web. config für die Commerce Server-Website ordnungsgemäß konfigurieren. Der Abschnitt "cacheFilter" enthält die folgenden Attribute:
  • Das "whereClause"-Attribut.
  • Das "exactMatch"-Attribut.
Sie können eine der folgenden Optionen verwenden, um zu verwalten, welche WHERE-Klausel zwischengespeichert werden soll:
  • Geben Sie die gesamte WHERE-Klausel im Attribut "whereClause" an, und legen Sie dann das Attribut "exactMatch" auf " true" fest.
  • Geben Sie im Attribut "whereClause" eine WHERE-Klausel an, und legen Sie das Attribut "exactMatch" auf " false" fest. Dadurch kann Commerce Server alle WHERE-Klauseln Zwischenspeichern, die eine partielle Übereinstimmung mit den in der Konfigurationsdatei angegebenen aufweisen.
Hinweis Das Attribut "exactMatch" ist optional. Wenn Sie das Attribut "exactMatch" nicht angeben, wird es standardmäßig auf " true" festgelegt. Im folgenden Beispiel wird gezeigt, wie Sie den Konfigurationsabschnitt ändern. In diesem Beispiel wird auch die Verwendung des Attributs "exactMatch" veranschaulicht.
<catalog><catalogSets .../>      <cache enable="true">        <cacheFilter>          <add whereClause="WHERE [ListPrice] between 0 AND 1000'" />          <add whereClause="isActive" exactMatch="False" />          ...         </cacheFilter>       </cache> </catalog>
Regeln für die Definition des "whereClause"-Attributwerts im cacheFilter-AbschnittHinweis der Wert des Attributs "whereClause" im Abschnitt "cacheFilter" ist Zeichenfolgenübereinstimmung. Die folgenden Regeln müssen beispielsweise befolgt werden:
  • Zwischen den Schlüsselwörtern "whereClause"-Attributwert ist nur ein Leerzeichen zulässig. Beispiel:
    • whereClause = "ProductID like ' AW2% '" ist nicht zugeordnet
    • whereClause = "ProductID like ' AW2% '" ist zugeordnet
  • Am Anfang oder Ende des Attributwerts "whereClause" sind keine Leerzeichen zulässig, wenn ein Wert für mehrere Schlüsselwörter vorhanden ist. Beispiel:
    • whereClause = "ProductID like ' AW2% '" ist nicht zugeordnet
    • whereClause = "ProductID like ' AW2% '" ist nicht zugeordnet
  • Der unter Wert für single-quoted-Anführungszeichen innerhalb des "whereClause"-Attributs muss vollständig Zeichenfolgen zugeordnet sein. Nehmen wir beispielsweise an, dass die Suchabfrage "ProductID like" AW2% "lautet. In diesem Fall
    • whereClause = "ProductID like" AW2 "ist keine Übereinstimmung
    • whereClause = "ProductID like ' AW2%" ist eine Übereinstimmung

Weitere Informationen zu diesem Hotfix

Informationen zum Hotfix

Ein unterstützter Hotfix steht von Microsoft zur Verfügung. Dieser Hotfix soll jedoch nur das in diesem Artikel beschriebene Problem beheben. Wenden Sie diesen Hotfix nur auf Systemen an, bei denen das in diesem Artikel beschriebene Problem auftritt. Dieser Hotfix kann zusätzliche Tests erhalten. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir, dass Sie auf das nächste Software Update warten, das diesen Hotfix enthält. Wenn der Hotfix heruntergeladen werden kann, befindet sich oben in diesem Knowledge Base-Artikel ein Abschnitt "Hotfix-Download verfügbar". Wenn dieser Abschnitt nicht angezeigt wird, wenden Sie sich an den Microsoft-Kundendienst und Support, um den Hotfix zu erhalten. Hinweis Wenn weitere Probleme auftreten oder eine Problembehandlung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die üblichen Supportkosten gelten für weitere Support Fragen und Probleme, die nicht für diesen speziellen Hotfix in Frage kommen. Eine vollständige Liste der Microsoft-Kundendienst-und-Support-Telefonnummern oder zum Erstellen einer separaten Service Anfrage finden Sie auf der folgenden Microsoft-Website: Hinweis Das Formular "Hotfix-Download verfügbar" zeigt die Sprachen an, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, liegt dies daran, dass ein Hotfix für diese Sprache nicht verfügbar ist.

Voraussetzungen

Um diesen Hotfix anwenden zu können, müssen Sie Commerce Server 2009 oder Commerce Server 2009-Vorlagenpaket für SharePoint 2010 installiert haben.

Informationen zum Neustart

Sie müssen den Computer nicht neu starten, nachdem Sie diesen Hotfix angewendet haben. Sie müssen jedoch Internet Informationsdienste (IIS) neu starten, nachdem Sie diesen Hotfix angewendet haben. Um IIS neu zu starten, öffnen Sie ein Eingabeaufforderungsfenster, geben Sie den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE:
iisreset/Restart
Hinweis Mit dieser Option werden alle IIS-Dienste angehalten, die ausgeführt werden, und Sie werden dann neu gestartet.

Dateiinformationen

Die englische Version dieses Hotfixes weist die in der nachstehenden Tabelle aufgelisteten Dateiattribute (oder höher) auf. Datums- und Uhrzeitangaben für diese Dateien sind in der "Universal Time Coordinated" (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese Angaben in die Ortszeit umgewandelt. Den Unterschied zwischen UTC- und Ortszeit können Sie in der Systemsteuerung unter Datum und Uhrzeit mithilfe der Angaben auf der Registerkarte Zeitzone ermitteln.
Für alle unterstützten Versionen von Commerce Server 2009
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
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
Für alle unterstützten Versionen des Commerce Server 2009-Vorlagenpakets für SharePoint 2010
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
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

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen


Beachten Sie die folgenden zwei Punkte während und nach der Deinstallation des Hotfixes:
  1. Möglicherweise wird ein Dialogfeld angezeigt. Das Dialogfenster warnt Sie, dass einige Anwendungen geschlossen werden müssen, bevor Sie den Deinstallationsvorgang fortsetzen können. Übernehmen Sie in diesem Fall die Standardauswahl, und klicken Sie auf die Schaltfläche OK , um fortzufahren.
  2. Nachdem Sie den Hotfix für Commerce Server 2009 deinstalliert haben, werden möglicherweise sowohl Commerce Server 2009 als auch Commerce Server 2007 im Menü Start angezeigt. In diesem Fall können Sie das Menüelement "Commerce Server 2007" ignorieren oder löschen.
Weitere Informationen finden Sie auf den folgenden MSDN-Websites (Microsoft Developer Network):Wenn Sie das Commerce Server 2009-Vorlagenpaket für SharePoint 2010 herunterladen möchten, besuchen Sie die folgende Microsoft-Website: