The Difference Between Send Port Filters and Orchestration Receive Shape Filters
How many times have you had something like this happen to you? Things are going along smoothly and you hit that big dev problem that for whatever reason, you can’t figure out and that code has to work RIGHT NOW! I was working with a BizTalk solution that used an itinerary from the ESB Toolkit 2.0. At the end of one of the orchestrations where I call the itinerary.Advance() method, an exception was thrown with this awful message: “Requested value ‘Messaging’ was not found.” I googled the darn thing and dug around for a couple of days, even posted a question in the MSDN forums to no avail. No solution to be found.
Fortunately, I finally looked at the whole thing with a clear head and discovered that I put quotation marks around the string values in the filter for the Dynamic send port that I created to get an off-ramp configured in the itinerary designer. Nuts… Anyway, I removed the quotes, fixed the itinerary, and redeployed it to find everything working fine.
Yeah, I felt pretty foolish.
This is one of those things that will haunt you if you don’t pay close attention to what you’re doing. When creating a filter on a Receive shape in an Orchestration, you must include quotation marks around the string values. However, the same does not apply to filters on send ports. There, you MUST NOT include the quotes. It’s a small thing, for certain, but something you may not notice until it’s far too late at night and that deadline is looming.