Side-by-side deployment with http receive location

Topics: General Questions
Feb 10, 2009 at 8:24 PM
I am trying to set up the latest BDF (latest version) with side-by-side deployment and I'm running into a problem.
I have an existing application deployed called ZZZRequests (no version numbers used)
I created a new solution with the new framework and gave it a 2.0 version in the btdfproj file.  After manually adding assembly version 2.0 to the Pipeline project properties, I was able to get much of the way through the deployment, but then I hit this:

Information: Importing bindings "C:\ZZZRequests\ZZZRequests.Deployment\PortBindings.xml" into application "ZZZRequests_2.0" in BizTalk configuration database (server="xxxxxxx", database="BizTalkMgmtDb")...
Error: Failed to update binding information.
Cannot update receive port "ZZZRequests_2.0_ZZZRequests_Shopping".
Cannot update receive location "ZZZRequests_2.0_ZZZRequests_Shopping_Http".
        Address should be unique for Receive Location 'ZZZRequests_2.0_ZZZRequests_Shopping_Http'.
        Address '/ShoppingReceive/BTSHTTPReceive.dll' is already present for Receive Location 'ZZZRequests_Shopping_Http'.
In my original application, I have a receive location called "ZZZRequests_Shopping_Http"
This seems to indicate to me that I need to version my port locations as well.  How do I do this in a way that will be consistent with the Deployment Framework?
Feb 11, 2009 at 5:56 AM
First of all, note that you can disable side-by-side versioning if you have no need for it.  You can just set <EnableSideBySide> to false in the btfproj file.  It's set to true in the sample.

That said, receive location and send and receive port names must be unique across BizTalk applications.  In addition, and this is where your issue comes in, physical receive location addresses must be unique across applications.  BizTalk is saying that you already have a receive location listening on '/ShoppingReceive/BTSHTTPReceive.dll'.  To work with side-by-side versioning, you would probably want to modify your URLs to be, for example, '/ShoppingReceive/v1_0/BTSHTTPReceive.dll' and '/ShoppingReceive/v2_0/BTSHTTPReceive.dll' to maintain distinct physical addresses.  (In reality, chances are that you'd leave your original URL alone and just add versioning to new ones.)

I hope that helps.  Let me know if you have any more questions.

Feb 11, 2009 at 7:53 PM
I guess what I was trying to ask is - does BTDF manage the versioning for you.  My answer is apprently no.  I found the vdirlist.txt in the sample project has 2 versions of virtual directory names, so I guess that is the best place to manage that.  (well, now that today's release is out - it will be managed in the btdfproj file)
Feb 11, 2009 at 9:16 PM
It does manage the versioning quite a bit, but not to the point of modifying physical addresses.  It does manage send and receive port and receive location names, but I didn't have an automatic way to modify the physical addresses, which could be any kind of URI (file, Oracle, SQL, MSMQ, etc. etc.).  If you think of something in that arena that would be useful, please let me know!