Key points to remember while doing the IIS 7.0 Settings to setup HTTP Receive (under various scenarios) for BizTalk Server 2010

1. Should IIS app pool be set to 32 or 64 bit when using AS2 receive pipelines?

Any process that runs any pipeline that uses the AS2 pipeline components needs to be a 32 bit process - not a 64 bit process. These pipelines would include AS2 Receive & Send pipelines, AS2EDI Receive & Send pipelines as well as any custom pipelines you may create that use AS2 components in them.
So, on the Send side you should use the 32 bit send host. 
On the Receive side, in addition to the 32 bit dll, IIS needs to be configured for 32 bit mode as well. For this, the app pool is set up to run .NET Framework Version 4.0 and Enable 32-Bit Applications = True.

 

 

You could also refer to the "To configure the Fabrikam Web page" section of https://technet.microsoft.com/en-us/library/bb246041.aspx for steps on this.

2. What if AS2 Receive pipelines are run on App Pool which is set to 64-bit process?  

If you try to run AS2 pipeline in a 64 bit process you will get the following error:
There was a failure executing the receive pipeline: "Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Receive, Microsoft.BizTalk.Edi.EdiIntPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "Unknown" Receive Port: "RcvPortName" URI:
"/BTSHTTPReceive64/BTSHTTPReceive.dll" Reason: Retrieving the COM class factory for component with CLSID {254B4004-2AA7-4C82-BB2E-18BA7F22DCD2} failed due to the following error: 80040154.

Therefore, make sure that the app pool that runs AS2 receive must be 32 bit and you must use the 32 bit version of BTSHTTPReceive.dll.

3. How about the relation between the Swift Accelerators, FileAct Adapters, InterAct Adapters, RosettaNet & 64 bit processes?

All of these require 32 bit hosts. FileAct and Interact are adapters that ship with Swift Accelerator.

4. In IIS, do we need to create two ISAPI filters? One for the 32-bit version and one for the 64-bit version of the BTSHTTPReceive.dll?
Yes, you will need to create two ISAPI filters - one for 32bit and one for 64bit in order to do 32 and 64 bit http receives respectively.

5. What should the IIS app pool's pipeline mode be set to? (this is not the BTS pipeline but the IIS setting)  

We are referring to the given setting: 

So, all the msdn documents assume that you would use default app pool pipeline mode i.e. integrated. However, there is no problem in running in Classic mode too. However, the general recommendation in IIS 7.0 is to run in integrated mode (due to better performance) unless the code running in the app pool doesn’t support it. For any app pools that may run custom code, see this link for more information about what specifically cannot be run in integrated: https://msdn.microsoft.com/en-us/library/bb515251.aspx

6. Some docs mention setting app pool to .NET 2.0 and some mention .NET 4.0 - which should you use?

With the default pipelines shipped with BizTalk Server 2010, you can run the app pool in .NET 2.0 or .NET 4.0 mode – but if ANY part of the receive thread accesses a component that you built and deployed (whether it is a custom pipeline, custom pipeline component, schema used in the pipeline, or map in the receive port), you must run in .NET 4.0 mode because a .NET 2.0 thread does not know about the new .NET 4.0 GAC and you will get errors finding the assembly in the GAC.
In that case the best way to avoid the errors is to use .NET 4.0, which will cover all the scenarios.

For example, when you run a custom pipeline that contains the AS2 Decoder & Disassembler components (no custom code) in a .NET 2.0 app pool:
There was a failure executing the receive pipeline: "PipelineProject.MyAS2ReceivePipeline, PipelineProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1891cbe9613ba084" Source: "Unknown" Receive Port: "RcvPortName" URI: "/BTSHTTPReceive32/BTSHTTPReceive.dll" Reason: Failed to get pipeline: PipelineProject.MyAS2ReceivePipeline, PipelineProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1891cbe9613ba084. Please verify that the pipeline strong name is correct and that the pipeline assembly is in the GAC.

Hope this will reduce some of your troubles while using BizTalk to consume or create web services.

 

Written by
Rasika Chaudhary

Reviewed by
Shailesh Agre

Microsoft India GTSC