Using BTSHTTPReceive in x64 Environment

I have a VM with BTS 2010 installed on a Windows Server 2008 R2 x64. In this environment I wanted to find out how to work with HTTP Adapter. Fortunately there two samples found in <install folder>:\Program Files(x86)\BizTalk Server 2010\SDK\Samples\AdapterUsage\HTTPRequestResponse or HTTPSolicitResponse (you will find them if you have selected the SDK feature during BizTalk Installation). Before running the example you will need to follow these steps if working in x64 environment (i.e. my VM):

  1. Open IIS and click Machine Name on left panel, then click "ISAPI and CGI restrictions" on the right panel, then Add the ISAPI or CGI path:

1 HTTP
On a 64 bit machine add: C:\Program Files (x86)\Microsoft BizTalk Server 2010\HttpReceive64\BTSHTTPReceive.dll

2 HTTP

3 HTTP

2. Check allowed extension path or execute.

image

For sample for instance RequestResponse, you will need to click setup in HTTPRequestResponse folder. After refreshing IIS you will see HTTPRequestResponseSample.

image

Now you will have to perform the following steps:

  1. Click "HTTPRequestResponseSample" on left panel, then click "Handler Mapping" on middle panel, then click "Add script mapping” with the following setting: 4 HTTP
    Request path:BTSHTTPReceive.dll
    Executable:
    On 64 bit machine add: C:\Program Files (x86)\Microsoft BizTalk Server 2010\HttpReceive64\
    image
  2. Click Request Restriction 5  HTTP

Click OK and click YES if ask to add this ISAPI extension.

From sample text on MSDN I understand I had to configure the virtual directory for this sample to run under the context of a user in the BizTalk Isolated Host Users and IIS_IURS user groups, So I had to configure the virtual directory to run in a new IIS application pool by completing the following steps (these differ from original text as I have IIS 7.0):

    1. Click Start, point to All Programs, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
    2. In the Internet Information Services (IIS) Manager, navigate to the Application Pools folder.
    3. Right-click the Application Pools folder and click New, Application Pool...
    4. Enter a name for the Application Pool ID: such as BizTalkSDKSamples, verify that the .NET Framework 4.0.30319 option is selected, and Managed Pipeline Mode Integrated (leave Start the Application pool immediately unchecked) and click OK to create the new application pool.
    5. Click Advanced Settings in Edit Application Pool pane on left.
    6. Click the Identity of Process model and change the identity under which this application pool runs to a user that is a member of the BizTalk Isolated Host Users user group. This user should also be a member of the local IIS_IURS user group.
    7. Configure the virtual directory for this SDK sample to run under the new application pool. The Application pool setting is available on the Advanced Setting in Actions Pane tab of the HTTPRequestResponseSample.
    8. Start application pool.

To test if this is working I browsed to web application belonging to this sample.

image

I entered 1000 in Estimated Price and clicked Place Order.

image

I got the above as result. I check in BizTalk Administration Console if any error occurred, but I could find any. So I can conclude from that this sample work in my x64 environment. I hope this little exploration of HTTP Adapter in 64-bits environment will help others when configuring their HTTP configuration.

Technorati:

Comments

jeffw said…
Steef-Jan,

Thanks so much for putting this together! I've been banging my head against enabling HTTP recv ports on BTS 2010 with IIS 7 for a couple of days now and none of the MS Biztalk went into this level of detail.

I followed your instructions, but when I browse to the responserequest asp.net app I get the following error...

HTTP Error 500.21 - Internal Server Error

Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

I think this is more of an IIS config issue than BTS, but it's blocking me none the less. Do you have any thoughts on it?

Thanks for any suggestions and htis post among your others. I've used many of your explorations in my own BizTalk adventures.

Thanks again,
Jeff W
jeffw said…
Thanks Steef-Jan,

I've been banging my head tryign to get HTTP recv ports to work with BTS 2010 and IIS 7 for a couple of days now. This post went into alot more detail than the MS documentation.

Unfortunately, I'm still getting the following error when I browse to the requestresponse application...
------------
HTTP Error 500.21 - Internal Server Error

Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list
------------

I think this is more of an IIS 7 config issue than a BTS one, if you have any suggestions I'd appreciate it.

Thanks again for this post and your others. I've used may of your explorations in my own BizTalk adventures over the years.

- Jeff
jeffw said…
Thanks Steef-Jan for this post I've been banging my head against the wall trying to get HTTP recv ports to work with BTS 2010 and IIS 7 for the last couple of days. Your post went into a much deeper level of detail than the MS documentation and covered the IIS config needed as well.

Unfortunately I'm still getting an error when I browse to the requestresponse application (below)...

HTTP Error 500.21 - Internal Server Error

Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Do you know what might be causing it? I beleive it's an IIS 7 config issue as opposed to BTS. Any suggestion would be helpful at this point.

Thanks again for this post and your others, I've used several of your explorations in my own BizTalk adventures.

- Jeff
Hi to reolve that error you might want to look at this blog post http://www.gotknowhow.com/articles/fix-bad-module-managedpipelinehandler-in-iis7 that explains how to solve that issue.
Anonymous said…
I am getting a problem related to this article mentioned at following forum... can you please comment on that:

http://social.msdn.microsoft.com/Forums/en/biztalkgeneral/thread/235aa9b1-348d-4135-ab5c-bdba16993de1
Isn't the problem more related to pipeline not being found that the BTSHTTPReceive. The problem you are facing is that the pipeline or its components are not present in the GAC. You need to make sure that the pipeline component is signed with a strong name and is in the GAC. Try using FusLogvw.exe (part of the .Net SDK) to catch Assembly loading errors and determine what is the exact problem indicated by David Grospelier/Dan Rosanova http://social.msdn.microsoft.com/Forums/br/biztalkgeneral/thread/fa0cbaee-3864-4b97-9392-660bb0857706.
Anonymous said…
For those who don't who do get a 500 error but not a 21 sub code, may want to visit your appPool. In my case I had a 500.21.193. x32 error code 193 basically means, my app is not a 32 bit. So in AppPool, I use .Net version 4 and then i set to false the setting "Enable 32-Bit Applications" in the advance settings of the AppPool.

James

Popular posts from this blog

DTAP Strategy: Pricing and Licensing

Table Operation on Oracle 11g XE with OracleDbBinding

Integration, the community blasting into 2017!