Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

PRB: PutOrderFormValue Requires High Isolation When Multiple Sites Are on the Same Server


View products that this article applies to.

This article was previously published under Q325780

↑ Back to the top


Symptoms

When two Microsoft Commerce Server sites are configured to run on the same server, the order form may be populated with data from the wrong site if you call to the PutOrderFormValue method without all three parameters, as shown in the following sample code:
Set mscsOrderGrp = LoadBasket("{3991347A-1A14-4D0B-8D2E-FA52AF46C1A5}")

Set dictItem = Server.CreateObject("Commerce.Dictionary") 
dictItem.product_catalog = "generic"
dictItem.product_catalog_base = "generic"
dictItem.product_id = "Valerie"
dictItem.Quantity = 3
Call mscsOrderGrp.AddItem(dictItem)

Call mscsOrderGrp.PutOrderFormValue("locationId", "1" )
				

↑ Back to the top


Cause

Because the call to the PutOrderFormValue method does not inculde the name of the order form, the wrong order form is updated. The PutOrderFormValue method is in Requisition.dll. This method cannot differentiate the OrderForm when more than one site is in the same Internet Information Services (IIS) pooled application.

↑ Back to the top


Resolution

Change the call to PutOrderFormValue so that it includes the OrderForm name as the third parameter:
Call mscsOrderGrp.PutOrderFormValue(sKey, sValue, sOrderFormName)
				
If you cannot change the site code, configure each site to have Application Protection set to High (Isolated). You can do this in the Commerce Server Manager. Locate the Default Web Site, and then set the properties on the two Virtual Directories. You also must apply the changes to all of your files.

↑ Back to the top


Status

This behavior is by design.

↑ Back to the top


More information

Microsoft Commerce Server 2000 will work in your configuration in High (Isolated) mode. By default, Web services (Inetinfo.exe) runs in its own process, and other applications run in a single, pooled process (DLLHost.exe). The difference between in-process and out-of-process is a trade off that favors reliability instead of pure performance. The performance impact of having a single pooled process (DLLHost.exe) versus multiple pooled processes (by using another instance of DLLHost.exe) are minimal. The only savings that you get by having a single pooled process is that you do not have multiple copies of some DLLs in memory. You can address this issue by adding memory if your monitoring determines that this is the bottleneck for your server.

The danger of the default application setting is that if one application in the pool fails, it causes all applications (Microsoft Commerce Server sites) in the pool to fail. Although the Web server still runs, this does not help if you lose all of the Microsoft Commerce Server sites that are configured on your server. To avoid this problem, set these high priority applications to run as isolated processes.

↑ Back to the top


Keywords: KB325780, kbprb

↑ Back to the top

Article Info
Article ID : 325780
Revision : 1
Created on : 9/4/2002
Published on : 9/4/2002
Exists online : False
Views : 340