Sintomas
Considere o seguinte cenário:
-
Ativa o sistema de cache no ficheiro Web.config para um website que está a executar o Microsoft Commerce Server 2009.
-
Utiliza a classe Configuração de Categorias para especificar a configuração pré-carregada de um objeto de categoria.
-
Você define a propriedade LoadChildProducts para True.
-
Especifica uma cláusula de filtragem na propriedade CategoryConfiguration.ChildProducts.SqlWhereClause.
-
Utiliza o método GetCategory ou o método GetProduct para recuperar categorias infantis ou produtos infantis do objeto De Configuração de Categorias.
Neste cenário, o cache de catálogo não pode ser utilizado para recuperar as categorias de crianças e os produtos infantis. Portanto, o site pode experimentar um desempenho diminuído quando há alta carga. Por exemplo, tem um site que utiliza o catálogo de amostras AdventureWorks. Executa o seguinte exemplo de código para recuperar o nome de exibição de um objeto de categoria. Neste exemplo, o código consulta sempre os dados da base de dados do Catálogo, embora o cache de catálogo esteja ativado.
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);
Nota Este mesmo problema ocorre quando se utiliza o método GetProduct no exemplo do código. A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isto inclui, mas não se limita a, as garantias implícitas de comercialismo ou aptidão para um determinado fim. Este artigo assume que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, não modificarão estes exemplos para fornecer funcionalidades adicionais ou procedimentos de construção para satisfazer os seus requisitos específicos.
Resolução
Para resolver este problema, aplique este hotfix no servidor que está a executar o Commerce Server 2009.Depois de aplicar este hotfix, é permitido o cache de crianças e as categorias de crianças na cache do catálogo quando utilizar um filtro "whereClause". Por predefinição, qualquer consulta que contenha uma cláusula contorna a cache do catálogo. Para ativar o cacheching, deve adicionar uma secção "cacheFilter" e configurá-la corretamente no ficheiro Web.config para o website do Servidor de Comércio. A secção "cacheFilter" fornece os seguintes atributos:
-
O atributo "whereClause".
-
O atributo "exactMatch".
Pode utilizar uma das seguintes opções para gerir qual a cláusula a cache:
-
Especifique a totalidade em que a cláusula no atributo "whereClause" e, em seguida, definir o atributo "exactMatch" ao True.
-
Especifique uma cláusula em que a dispor á "whereClause" e, em seguida, detete o atributo "exactMatch" ao False. Isto permite ao Commerce Server cache qualquer cláusula que tenha uma correspondência parcial com o especificado no ficheiro de configuração.
Nota O atributo "exactMatch" é opcional. Por predefinição, se omitir o atributo "exactMatch", está definido para True. O exemplo que se segue mostra como modificar a secção de configuração. Este exemplo também mostra o uso do atributo "exactMatch".
<catalog><catalogSets .../> <cache enable="true"> <cacheFilter> <add whereClause="WHERE [ListPrice] between 0 AND 1000'" /> <add whereClause="isActive" exactMatch="False" /> ... </cacheFilter> </cache> </catalog>
Regras na definição do valor do atributo "whereClause" na secção cacheFilterNota O valor do atributo "whereClause" na secção "cacheFilter" é compatível com cordas. Por exemplo, devem ser seguidas as seguintes regras:
-
Apenas um espaço branco é permitido entre as palavras-chave de valor "whereClause". Por exemplo:
-
onde Clause="ProductID como 'AW2%'" não é igualado
-
onde O Clause="ProductID como 'AW2%'" é igualado
-
-
Não é permitido espaço branco no início ou no fim do valor de atribuição "whereClause" se houver um valor de palavras-chave múltiplos. Por exemplo:
-
whereClause=" ProductID como 'AW2%'" não é igualado
-
onde Clause="ProductID como 'AW2%' " não é igualado
-
-
O subvalor indicado pela "cláusula" deve ser totalmente compatível com as cordas. Por exemplo, assuma que a consulta de pesquisa é "ProductID como 'AW2%'"; neste caso,
-
ondeClause="ProductID como 'AW2' não é uma correspondência
-
whereClause="ProductID like 'AW2%' é uma correspondência
-
Mais informações sobre este hotfix
Informação de hotfixo
Um hotfix suportado está disponível na Microsoft. No entanto, este hotfix destina-se a corrigir apenas o problema descrito neste artigo. Aplique este hotfix apenas nos sistemas que estão a experimentar o problema descrito neste artigo. Este hotfix pode receber testes adicionais. Portanto, se não for severamente afetado por este problema, recomendamos que aguarde a próxima atualização de software que contenha este hotfix. Se o hotfix estiver disponível para download, existe uma secção de "Hotfix download disponível" no topo deste artigo da Knowledge Base. Se esta secção não aparecer, contacte o Serviço de Apoio ao Cliente da Microsoft para obter o hotfix. Nota Se ocorrerem problemas adicionais ou se for necessário algum problema, poderá ter de criar um pedido de serviço separado. Os custos habituais de apoio aplicar-se-ão a questões e questões de apoio adicionais que não se qualificam para este hotfix específico. Para obter uma lista completa dos números de telefone do Microsoft Customer Service e Support ou para criar um pedido de serviço separado, visite o seguinte website da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota O formulário "Hotfix download disponível" apresenta os idiomas para os quais o hotfix está disponível. Se não vê a sua língua, é porque não está disponível um hotfix para esse idioma.
Pré-requisitos
Para aplicar este hotfix, você deve ter Commerce Server 2009 ou Commerce Server 2009 Template Pack para SharePoint 2010 instalado.
Informações sobre reinício
Não tem de reiniciar o computador depois de aplicar este hotfix. No entanto, tem de reiniciar os Serviços de Informação da Internet (IIS) depois de aplicar este hotfix. Para reiniciar o IIS, abra uma janela Command Prompt, digite o seguinte comando e, em seguida, prima ENTER:
iisreset /reiniciarNota Esta opção para todos os serviços IIS que estão em funcionamento e depois reinicia-os.
Informações de arquivo
A versão inglesa desta correção tem os atributos de ficheiro listados na tabela que se segue (ou atributos de ficheiro posteriores). As datas e horas destes ficheiros estão listadas no formato de Hora Universal Coordenada (UTC). Quando visualizar as informações dos ficheiros, estas serão convertidas na hora local. Para encontrar a diferença entre UTC e hora local, utilize o separador Time Zone no item data e hora no Painel de Controlo.
Para todas as versões suportadas do Commerce Server 2009
Nome do ficheiro |
Versão de arquivo |
Tamanho do arquivo |
Data |
Tempo |
Plataforma |
---|---|---|---|---|---|
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 |
Para todas as versões suportadas do Pacote de Modelos Commerce Server 2009 para SharePoint 2010
Nome do ficheiro |
Versão de arquivo |
Tamanho do arquivo |
Data |
Tempo |
Plataforma |
---|---|---|---|---|---|
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 |
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informações
Tenha em atenção os dois pontos seguintes durante e após a desinstalação do hotfix:
-
Pode ser apresentada uma janela de diálogo. A janela de diálogo avisa que algumas aplicações precisam de ser fechadas antes de poder continuar com o processo de desinstalação. Nesta situação, aceite a seleção predefinida e clique no botão OK para continuar.
-
Depois de desinstalar o hotfix para Commerce Server 2009, tanto o Commerce Server 2009 como o Commerce Server 2007 podem aparecer no menu Iniciar. Nesta situação, pode ignorar ou eliminar o item do menu Commerce Server 2007.
Para mais informações, visite os seguintes websites da Microsoft Developer Network (MSDN):
método decategoria de elemento de catálogo CategoriaGetCategoryGetCategory MethodPara baixar o Pacote de Modelos Commerce Server 2009 para o SharePoint 2010, visite o seguinte website da Microsoft: