09-07-06 12:31 PM
Hi Phil,
I don't have a lot of experience with the advertising and marketing bits in
CS but I can confirm that you are seeing an overflow exception based on the
error code. I'm assuming the component was working at a point in time. Has
the only change affecting the advertising components since then been the
growth in page groups?
Cheers,
Colin
"Phil Mellor" <Phil Mellor@discussions.microsoft.com> wrote in message
news:F9086E15-3ED3-4826-9613-3871A1099A51@microsoft.com...
> Hi,
>
> We're having problems with the advertising component in Commerce Server.
> We're not sure what the specific cause is, but the problem only occurs
> when
> we have too many page groups (more specifically, too many page groups
> assigned to a particular campaign item, we think).
>
> We have 203 page groups (this may rise - we assign page groups to channels
> and/or postings in MCMS as necessary). We have 34 campaign items.
>
> There are 230 rows in the page_group_xref table. Most campaign items are
> only assigned to one page group, but a couple are assigned to about 100
> page
> groups each. Most page groups only have one campaign item assigned, but
> one
> of them has 28.
>
>
> When we use the advertising pipeline to select adverts, we get the
> following
> error:
>
> ProgID: Commerce.CSFInitPipeline.1
> Failure during cache refresh in component Commerce.CSFLoadAdvertisements:
> Hresult: 0x8002000a
> at Microsoft.CommerceServer.Interop.PooledPipelineClass.Execute(Int32
> lMode, Object pdispOrder, Object pdispContext, Int32 lFlags)
> at
> Microsoft.CommerceServer.Runtime.Pipelines.ContentSelectionPipeline.Execut
e(Object
> order, Object context)
> --- End of inner exception stack trace ---
> at
> Microsoft.CommerceServer.Runtime.Pipelines.ContentSelectionPipeline.Execut
e(Object
> order, Object context)
> at
> Microsoft.CommerceServer.Runtime.Targeting.ContentSelector.GetContent()
> at WebCommerce.Adverts.WebAdvert.GetHtml()
>
>
> This is the code that throws the exception:
>
> public string GetHtml()
> {
> // Get the advertising selector from the current commerce server context
> CommerceContext context = CommerceContext.Current;
> ContentSelector selector =
> context.TargetingSystem.SelectionContexts["advertising"].GetSelector()
;
>
> // Specify the number of adverts required
> selector.ItemsRequested = this.NumberOfAdverts; // usually 5
>
> // Target at a particular page group
> if (this.PageGroup != null)
> {
> Profile targetingContextProfile =
> context.TargetingSystem.TargetingContextProfile;
> targetingContextProfile["PageGroup"].Value = this.PageGroup;
> selector.Profiles.Add("targetingContext", targetingContextProfile);
> }
>
> // Target at a particular user
> if (this.User != null)
> {
> selector.Profiles.Add("user", this.User.GetCommerceServerProfile());
> }
>
> // Get the content - if an applicable ad is selected, return its HTML
> StringCollection contents = selector.GetContent(); // <-- exception thrown
> here
> ...
> }
>
>
> In web.config we have defined the advertising cache:
> <cache
> name="Advertising"
> type="Advertising"
> cacheSize="200000" <-- not sure if this setting helps?
> refreshInterval="900"
> retryInterval="30" />
>
> We are running:
> Commerce Server 2002, FP1, MSIB, and MCMS on Windows Server 2003;
> SQL Server 2000 on Windows 2003
>
>
> Is there a limitation in Commerce Server as to how many
> pagegroups/campaigns
> we can assign, and if so can this be changed in a config file or registry
> setting?
>
> Is the cache size the problem, if so can it be increased? Is there a way
> to
> calculate the required size?
>
> Can anybody explain what is going wrong?
>
>
> Cheers,
>
> Phil Mellor
> Diagonal Solutions
[ Post a follow-up to this message ]
|