Simptome
Luați în considerare următorul scenariu:
-
Activați caching în sistemul catalog în fișierul web. config pentru un site web care rulează Microsoft Commerce Server 2009.
-
Utilizați clasa CategoryConfiguration pentru a specifica configurația preîncărcată a unui obiect Categorie .
-
Setați proprietatea LoadChildProducts la True.
-
Specificați o clauză de filtrare în proprietatea CategoryConfiguration. ChildProducts. SqlWhereClause .
-
Utilizați metoda GetCategory sau metoda GetProduct pentru a regăsi categoriile fiu sau produsele fiu ale obiectului CategoryConfiguration .
În acest scenariu, este posibil ca memorarea în cache a catalogului să nu fie utilizată pentru a regăsi categoriile fiu și produsele fiu. Prin urmare, site-ul web poate avea o performanță scăzută atunci când există o încărcare mare. De exemplu, aveți un site web care utilizează catalogul de eșantioane AdventureWorks. Să ruleze următorul exemplu de cod pentru a regăsi numele afișat al unui obiect de Categorie . În acest exemplu, codul interoghează datele din baza de date catalog de fiecare dată, deși este activată memorarea în cache a catalogului.
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);
Notă Aceeași problemă apare atunci când utilizați metoda GetProduct în exemplul de cod. Microsoft furnizează exemple de programare doar pentru ilustrație, fără garanție explicită sau implicită. Acestea includ, dar nu se limitează la garanþiile implicite de vandabilitate sau adecvare la un anumit scop. Acest articol presupune că sunteți familiarizat cu limbajul de programare care este în curs de demonstrare și cu instrumentele utilizate pentru a crea și a depana proceduri. Inginerii de asistență Microsoft vă pot ajuta să explicați funcționalitatea unei anumite proceduri. Cu toate acestea, aceștia nu vor modifica aceste exemple pentru a oferi funcționalități suplimentare sau pentru a construi proceduri pentru a îndeplini cerințele specifice.
Rezolvare
Pentru a rezolva această problemă, aplicați această remediere rapidă pentru serverul care rulează Commerce Server 2009. după ce aplicați această remediere rapidă, memorarea în cache a produselor pentru copii și a categoriilor fiu în memoria cache de catalog este permisă atunci când utilizați un filtru "whereClause". În mod implicit, orice interogare care conține o clauză WHERE ignoră memoria cache de catalog. Pentru a activa memorarea în cache, trebuie să adăugați o secțiune "cacheFilter" și să o configurați corect în fișierul web. config pentru site-ul web Commerce Server. Secțiunea "cacheFilter" oferă următoarele atribute:
-
Atributul "whereClause".
-
Atributul "exactMatch".
Aveți posibilitatea să utilizați una dintre următoarele opțiuni pentru a gestiona clauza WHERE to cache:
-
Specificați toată clauza WHERE din atributul "whereClause", apoi setați atributul "exactMatch" la True.
-
Specificați o clauză WHERE în atributul "whereClause", apoi setați atributul "exactMatch" la false. Acest lucru permite Commerce Server să memoreze în cache orice clauză WHERE care are o potrivire parțială cu ceea ce s-a specificat în fișierul de configurare.
Notă Atributul "exactMatch" este opțional. În mod implicit, dacă omiteți atributul "exactMatch", acesta este setat la True. Următorul exemplu vă arată cum să modificați secțiunea de configurare. Acest exemplu arată și utilizarea atributului "exactMatch".
<catalog><catalogSets .../> <cache enable="true"> <cacheFilter> <add whereClause="WHERE [ListPrice] between 0 AND 1000'" /> <add whereClause="isActive" exactMatch="False" /> ... </cacheFilter> </cache> </catalog>
Reguli în definirea valorii atributului "whereClause" în secțiunea cacheFilterNotă valoarea atributului "whereClause" din secțiunea "cacheFilter" este corelată cu șirul. De exemplu, trebuie respectate următoarele reguli:
-
Un singur spațiu alb este permis printre cuvintele cheie de valoare atribut "whereClause". De exemplu:
-
whereClause = "ProductID like ' AW2% '" nu este potrivit
-
whereClause = "ProductID like ' AW2% '" se potrivește
-
-
Nu sunt permise spații albe la începutul sau la sfârșitul valorii atributului "whereClause" dacă există o valoare mai multe cuvinte cheie. De exemplu:
-
whereClause = "ProductID like ' AW2% '" nu este potrivit
-
whereClause = "ProductID like ' AW2% '" nu este potrivit
-
-
Subvaloarea citată cu o singură valoare din cadrul atributului "whereClause" trebuie să fie complet corelată. De exemplu, să presupunem că interogarea de căutare este "ProductID like ' AW2% '"; în acest caz,
-
whereClause = "ProductID like ' AW2 ' nu este compatibil
-
whereClause = "ProductID like ' AW2% ' este un chibrit
-
Mai multe informații despre această remediere rapidă
Informații despre remedieri rapide
O remediere rapidă acceptată este disponibilă de la Microsoft. Cu toate acestea, această remediere rapidă este destinată să corecteze doar problema descrisă în acest articol. Aplicați această remediere rapidă doar pentru sistemele care întâmpină problema descrisă în acest articol. Această remediere rapidă poate primi teste suplimentare. Prin urmare, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următoarea actualizare software care conține această remediere rapidă. Dacă remedierea rapidă este disponibilă pentru descărcare, există o secțiune "Descărcare disponibilă pentru remediere rapidă" din partea de sus a acestui articol din baza de cunoștințe. Dacă nu apare această secțiune, contactați serviciul pentru clienți Microsoft și asistența pentru a obține remedierea rapidă. Notă Dacă apar probleme suplimentare sau dacă este necesară o depanare, poate fi necesar să creați o solicitare de serviciu separată. Se vor aplica costurile uzuale de asistență pentru întrebări suplimentare de asistență și probleme care nu se califică pentru această remediere rapidă specifică. Pentru o listă completă de servicii pentru clienți Microsoft și numere de telefon pentru asistență sau pentru a crea o solicitare de serviciu separată, vizitați următorul site Web Microsoft:
http://support.microsoft.com/contactus/?ws=supportNotă Formularul "Descărcare disponibilă pentru remedierea rapidă" afișează limbile pentru care este disponibilă remedierea rapidă. Dacă nu vedeți limba, aceasta se întâmplă deoarece o remediere rapidă nu este disponibilă pentru acea limbă.
Cerinţe preliminare
Pentru a aplica această remediere rapidă, trebuie să aveți pachetul de șabloane Commerce Server 2009 sau Commerce Server 2009 pentru SharePoint 2010 instalat.
Reporniți informațiile
Nu trebuie să reporniți computerul după ce aplicați această remediere rapidă. Cu toate acestea, trebuie să reporniți Internet Information Services (IIS) după ce aplicați această remediere rapidă. Pentru a reporni IIS, deschideți o fereastră de linie de comandă, tastați următoarea comandă, apoi apăsați pe ENTER:
iisreset/restartNotă Această opțiune oprește toate serviciile IIS care se execută, apoi le repornește.
Informații despre fișier
Versiunea în limba engleză a acestei remedieri rapide are atributele de fișier (sau atribute de fișier mai recente) listate în tabelul următor. Datele și orele pentru aceste fișiere sunt listate în ora universală coordonată (UTC). Atunci când vizualizați informațiile despre fișier, acesta este convertit la ora locală. Pentru a găsi diferența între UTC și ora locală, utilizați fila fus orar din elementul dată și oră din panoul de control.
Pentru toate versiunile acceptate de Commerce Server 2009
Nume fișier |
Versiune fișier |
Dimensiune fișier |
Dată |
Timp |
Platforma |
---|---|---|---|---|---|
Cs2009hotfixhelper.exe |
6.0.4171.27 |
13.080 |
18-Aug-2010 |
11:11 |
x86 |
Microsoft.catalogserver.dll |
6.0.4171.27 |
756.520 |
18-Aug-2010 |
11:11 |
x86 |
Microsoft.commerceserver.runtime.dll |
6.0.4171.27 |
850.744 |
18-Aug-2010 |
11:11 |
x86 |
Microsoft.commerceserver.catalog.dll |
6.0.4171.27 |
961.336 |
18-Aug-2010 |
11:35 |
x86 |
Pentru toate versiunile acceptate de pachetul de șabloane de Commerce Server 2009 pentru SharePoint 2010
Nume fișier |
Versiune fișier |
Dimensiune fișier |
Dată |
Timp |
Platforma |
---|---|---|---|---|---|
Cspatchhelper.exe |
6.0.4171.504 |
17.168 |
30-Nov-2010 |
08:16 |
x86 |
Microsoft.catalogserver.dll |
6.0.4171.504 |
756.520 |
30-Nov-2010 |
08:16 |
x86 |
Microsoft.commerceserver.runtime.dll |
6.0.4171.504 |
850.744 |
30-Nov-2010 |
08:16 |
x86 |
Microsoft.commerceserver.catalog.dll |
6.0.4171.504 |
961.336 |
29-Nov-2010 |
14:13 |
x86 |
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Mai multe informații
Vă rugăm să rețineți următoarele două puncte în timpul și după dezinstalarea remedierii rapide:
-
Se poate afișa o fereastră de dialog. Fereastra de dialog vă avertizează că unele aplicații trebuie să fie închise înainte de a putea continua procesul de dezinstalare. În această situație, acceptați selecția implicită și faceți clic pe butonul OK pentru a continua.
-
După ce dezinstalați remedierea rapidă pentru Commerce Server 2009, atât Commerce Server 2009, cât și Commerce Server 2007 pot apărea în meniul Start. În această situație, puteți să ignorați sau să ștergeți elementul de meniu Commerce Server 2007.
Pentru mai multe informații, vizitați următoarele site-uri Web Microsoft Developer Network (MSDN):
Metoda de catalogCategoryConfiguration ClassGetCategoryPentru a descărca pachetul de șabloane Commerce Server 2009 pentru SharePoint 2010, vizitați următorul site Web Microsoft: