使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

请考虑以下情况:

  • 在运行 Microsoft Commerce Server 2009 的网站的 web.config 文件中为目录系统启用缓存。

  • 使用CategoryConfiguration类指定类别对象的预加载配置。

  • 将LoadChildProducts属性设置为True

  • 在CategoryConfiguration属性中指定筛选子句。

  • 使用GetCategory方法或GetProduct方法检索CategoryConfiguration对象的子类别或子产品。

在此方案中,不能使用目录缓存检索子类别和子产品。 因此,当负载较高时,网站可能会遇到性能下降的情况。例如,您有一个使用 AdventureWorks 示例目录的网站。 运行以下代码示例以检索类别对象的显示名称。 在此示例中,该代码每次从目录数据库查询数据,但目录缓存已启用。

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);

注意 当你在代码示例中使用GetProduct方法时,会出现此问题。Microsoft 提供的编程示例仅用于说明,没有任何明示或默示的保证。 这包括但不限于对适销性或特定用途适用性的默示担保。 本文假定你熟悉所演示的编程语言,以及用于创建和调试过程的工具。 Microsoft 支持工程师可帮助解释特定过程的功能。 但是,它们不会修改这些示例以提供额外的功能或构建过程来满足你的特定要求。

解决方案

若要解决此问题,请将此修补程序应用于运行 Commerce Server 2009 的服务器。应用此修补程序后,当你使用 "whereClause" 筛选器时,可以在目录缓存中缓存子产品和子类别。 默认情况下,包含 where 子句的任何查询都将绕过目录缓存。 为了启用缓存,必须添加 "cacheFilter" 部分并在 Commerce Server 网站的 web.config 文件中正确配置它。"CacheFilter" 部分提供以下属性:

  • "WhereClause" 属性。

  • "ExactMatch" 属性。

你可以使用以下选项之一来管理要缓存的 where 子句:

  • 在 "whereClause" 属性中指定整个 where 子句,然后将 "exactMatch" 属性设置为True

  • 在 "whereClause" 属性中指定 where 子句,然后将 "exactMatch" 属性设置为False。 这使 Commerce Server 能够缓存与配置文件中指定的部分匹配部分匹配的任何 where 子句。

注意 "ExactMatch" 属性是可选的。 默认情况下,如果省略 "exactMatch" 属性,则会将其设置为True。以下示例显示了如何修改配置节。 此示例还显示了 "exactMatch" 属性的用法。

<catalog><catalogSets .../>      <cache enable="true">        <cacheFilter>          <add whereClause="WHERE [ListPrice] between 0 AND 1000'" />          <add whereClause="isActive" exactMatch="False" />          ...         </cacheFilter>       </cache> </catalog>

在 cacheFilter 部分中定义 "whereClause" 属性值的规则注意"cacheFilter" 部分中的 "whereClause" 属性的值是字符串匹配的。 例如,必须遵循以下规则:

  • 在 "whereClause" 属性值关键字之间仅允许一个空白。 例如:

    • whereClause = "ProductID,如" AW2% "" 不匹配

    • whereClause = "ProductID,如" AW2% "" 匹配

  • 如果存在多个关键字值,则在 "whereClause" 属性值的开头或结尾处不允许有空格。 例如:

    • whereClause = "ProductID,如" AW2% "" 不匹配

    • whereClause = "ProductID,如" AW2% "" 不匹配

  • "WhereClause" 属性中的 singled 引用的子值必须完全匹配字符串。 例如,假设搜索查询为 "产品 Id",如 "AW2%" ";在这种情况下,

    • whereClause = "ProductID like" AW2 "不匹配

    • whereClause = "ProductID 像" AW2% "是匹配项

有关此修补程序的详细信息

修补程序信息

Microsoft 提供了一个受支持的修补程序。 但是,此修补程序仅用于更正本文所述的问题。 仅对遇到本文中所述问题的系统应用此修补程序。 此修补程序可能会接受其他测试。 因此,如果你不会对此问题造成严重影响,我们建议你等待包含此修补程序的下一个软件更新。如果此修补程序可供下载,请参阅本知识库文章顶部的 "提供程序下载" 部分。 如果此部分未显示,请联系 Microsoft 客户服务和支持以获取修补程序。 注意 如果出现其他问题或需要进行任何故障排除,则可能必须创建单独的服务请求。 对于此特定修补程序不具备的其他支持问题和问题,将照常收取支持费用。 有关 Microsoft 客户服务和支持电话号码的完整列表,或者要创建单独的服务请求,请访问以下 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support注意 "提供程序下载" 窗体显示可使用该修补程序的语言。 如果您看不到您的语言,这是因为该语言的修补程序不可用。

先决条件

若要应用此修补程序,您必须安装有适用于 SharePoint 2010 的 Commerce Server 2009 或 Commerce Server 2009 模板包。

重启信息

应用此修补程序后,无需重新启动计算机。 但是,应用此修补程序后,必须重新启动 Internet 信息服务(IIS)。 若要重新启动 IIS,请打开命令提示符窗口,键入以下命令,然后按 ENTER:

iisreset/restart注意 此选项将停止正在运行的所有 IIS 服务,然后重新启动它们。

文件信息

此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。

对于所有受支持的 Commerce Server 2009 版本

文件名

文件版本

文件大小

日期

时间

平台

Cs2009hotfixhelper.exe

6.0.4171.27

13080

18-Aug-2010

11:11

x86

Microsoft.catalogserver.dll

6.0.4171.27

756520

18-Aug-2010

11:11

x86

Microsoft.commerceserver.runtime.dll

6.0.4171.27

850744

18-Aug-2010

11:11

x86

Microsoft.commerceserver.catalog.dll

6.0.4171.27

961,336

18-Aug-2010

11:35

x86

对于适用于 SharePoint 2010 的所有受支持版本的 Commerce Server 2009 模板包

文件名

文件版本

文件大小

日期

时间

平台

Cspatchhelper.exe

6.0.4171.504

17168

30-Nov-2010

08:16

x86

Microsoft.catalogserver.dll

6.0.4171.504

756520

30-Nov-2010

08:16

x86

Microsoft.commerceserver.runtime.dll

6.0.4171.504

850744

30-Nov-2010

08:16

x86

Microsoft.commerceserver.catalog.dll

6.0.4171.504

961,336

29-Nov-2010

14:13

x86

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

在卸载修补程序期间和之后,请注意以下两点:

  1. 可能会显示一个对话框窗口。 对话框窗口警告你需要关闭某些应用程序,然后才能继续 uninstallion 进程。 在这种情况下,接受默认选择,然后单击"确定"按钮继续。

  2. 卸载 Commerce Server 2009 的修复程序后,Commerce Server 2009 和 Commerce Server 2007 都可能会显示在 "开始" 菜单中。 在这种情况下,您可以忽略或删除 Commerce Server 2007 菜单项。

有关详细信息,请访问以下 Microsoft 开发人员网络(MSDN)网站:

目录元素 CategoryConfiguration 类 GetCategory 方法若要下载适用于 SharePoint 2010 的 Commerce Server 2009 模板包,请访问以下 Microsoft 网站:

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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×