現象
次のような状況で問題が発生します。
-
Microsoft Commerce Server 2009 を実行している web サイトの web.config ファイルで、カタログシステムのキャッシュを有効にします。
-
Category構成クラスを使って、 Categoryオブジェクトのプリロードされた構成を指定します。
-
LoadchildproductsプロパティをTrueに設定します。
-
フィルター句を指定するには、 SqlWhereClauseプロパティを使用します。
-
Category構成オブジェクトの子商品または子製品を取得するには、 getcategoryメソッドまたはgetcategoryメソッドを使います。
このシナリオでは、子カテゴリと子製品を取得するために、カタログのキャッシュを使用することはできません。 そのため、負荷が高い場合、web サイトのパフォーマンスが低下することがあります。たとえば、AdventureWorks サンプルカタログを使う web サイトがあるとします。 Categoryオブジェクトの表示名を取得するには、次のコード例を実行します。 この例のコードでは、カタログのキャッシュが有効になっていても、カタログデータベースのデータを毎回照会します。
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 サイトの 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" 属性値キーワードの間には、1つの空白のみを使用できます。 次に例を示します。
-
whereClause = "ProductID like ' AW2% '" は一致しません
-
whereClause = "ProductID like ' AW2% '" が一致します
-
-
複数のキーワード値がある場合は、"whereClause" 属性値の先頭または末尾に空白文字は使用できません。 次に例を示します。
-
whereClause = "ProductID like ' AW2% '" は一致しません
-
whereClause = "ProductID like ' AW2% '" は一致しません
-
-
"WhereClause" 属性内の2exchange シングル引用符で囲まれたサブ値は、完全に一致する文字列である必要があります。 たとえば、検索クエリは "ProductID"、"AW2%" のようなものであるとします。この場合は、
-
whereClause = "ProductID like ' AW2 ' は一致していません
-
whereClause = "ProductID like ' AW2% ' は一致しています
-
この修正プログラムに関する詳細情報
修正プログラムの情報
サポートされている修正プログラムは、Microsoft から提供されています。 ただし、この修正プログラムは、この記事で説明した問題のみを修正することを目的としています。 この修正プログラムは、この記事で説明されている問題が発生しているシステムにのみ適用してください。 この修正プログラムは、追加のテストを受ける可能性があります。 そのため、この問題で深刻な影響を受けていない場合は、この修正プログラムを含む次のソフトウェア更新プログラムを待つことをお勧めします。この修正プログラムをダウンロードできる場合は、このサポート技術情報の記事の上部にある「修正プログラムダウンロード可能」セクションを参照してください。 このセクションが表示されない場合は、Microsoft カスタマーサービスとサポートに問い合わせて、修正プログラムを入手してください。 注: その他の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービスリクエストを作成することが必要になることがあります。 この特定の修正プログラムに該当しないその他のサポートの質問や問題については、通常のサポート料金が適用されます。 Microsoft カスタマサービスとサポートの電話番号の完全な一覧、または別のサービスリクエストを作成するには、次の Microsoft web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support注: "Hotfix download available" フォームには、修正プログラムを提供している言語が表示されます。 使用している言語が表示されない場合は、その言語では修正プログラムが利用できないことが原因です。
必要条件
この修正プログラムを適用するには、Commerce Server 2009 または Commerce Server 2009 の SharePoint 2010 用のテンプレートパックがインストールされている必要があります。
再起動に関する情報
この修正プログラムを適用した後、コンピューターを再起動する必要はありません。 ただし、この修正プログラムを適用した後、インターネットインフォメーションサービス (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 |
サポートされているすべてのバージョンの Commerce Server 2009 テンプレートパック (SharePoint 2010)
ファイル名 |
ファイル バージョン |
ファイル サイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
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 |
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
以下の2つの点については、修正プログラムのアンインストール中およびアンインストール後に注意してください。
-
ダイアログウィンドウが表示されることがあります。 Uninstallion プロセスを続行するには、いくつかのアプリケーションを閉じる必要があることを示すダイアログウィンドウが表示されます。 この場合は、既定の選択内容をそのまま使用し、[ OK ] ボタンをクリックして続行します。
-
Commerce Server 2009 の修正プログラムをアンインストールすると、Commerce server 2009 と Commerce Server 2007 の両方が [スタート] メニューに表示されることがあります。 この場合は、Commerce Server 2007 のメニュー項目を無視するか削除することができます。
詳細については、次の Microsoft 開発者ネットワーク (MSDN) の web サイトを参照してください。
Catalog 要素 カテゴリの configuration クラスのgetcategory メソッドSharePoint 2010 用の Commerce Server 2009 テンプレートパックをダウンロードするには、次の Microsoft web サイトを参照してください。