I’ve been working on a project where we have two independent BizTalk 2006 clusters – one at the headquarters, and one (actually, a few) at some a remote office. In order to send messages back and forth, we are using HTTP as the transport protocol.
For example, we first query an AS400/DB2 database (via the HOST adapters for BizTalk 2006) through a receive port/location. This is picked up by a subscribing send port, which posts it via HTTP to the remote office. That remote office has an receive port/location configured to listen on HTTP, via the BTSHTTPReceive.dll ISAPI extension. This is then picked up by a send port that then inserts the data into an MSSQL database.
Having set this up a few times now, I’ve found that I keep making the same mistakes. Consequently, here’s my short-list of items to watch for when setting up HTTP for both send/receive in BizTalk 2006:
Make sure your application pool is configured to run under the context of your BizTalk use account
Confirm that your virtual directory has Scripts and Executables execute permissions
Copy the file “BTSHTTPReceive.dll” into your virtual directory from the folder “C:Program FilesMicrosoft BizTalk Server 2006HttpReceive”
Make sure to configure a “Web Service Extension” in IIS for the “BTSHTTPReceive.dll” file
Remove anonymous access to your virtual directory, and use either Integrated or Basic authentication (preferrably Integrated)
Make sure your send port utilizes the same security context, so that it can post to the site
Confirm that your BizTalkUser account belongs to the BizTalk Server Administrators group
For your send port, configure your destination with a querystring value, like this: http://localhost/transport/BTSHTTPReceive.dll?MessageType. I like to append the message type, but that’s up to you. For your receive location, configure your virtual directory plus ISAPI extension to something like: /transport/BTSHTTPReceive.dll?MessageType.
That’s all I can think of off the top of my head.
Best of luck!