I've developed a BizTalk pipeline and it while it works fine on the development VM, it does not in the production environment. Both environments run BizTalk Server 2009.
All the components in my pipeline work fine on other pipelines. The Exception I get is this, in the Windows Application Event Log (everything between <
and >
is irrelevant):
A message received by adapter "FILE" on receive location <Receive Location> with URI <URI> is suspended. Error details: There was a failure executing the receive pipeline: <My Pipeline> Source: "Unknown " Receive Port: <Receive Port> URI: <URI> Reason: Object reference not set to an instance of an object.
MessageId: <Message ID>
InstanceID: <Instance ID>
I know that no components are executed because the first component writes something to the database of a custom tracking application. This does not happen on this pipeline, and the same component works fine for all other pipelines that use it.
All the components on my pipeline are also used in other pipelines, none of which give this kind of problem.
So really this exception is happening between the adapter and the pipeline. Originally, the adapter used is a WCF-Custom
with sqlBinding
, but using a File
adapter results in the same exception.
Now, the Event Log entry is the only trace I have for all messages that go through this pipeline. There are no suspended instances. When I use the default PassThrough or XMLReceive pipelines, it just works.
Where do I go from here? What can be wrong? Is there a way to get some sort of stacktrace for this exception to help track it down?
Out of desperation, I started deploying the pipeline over and over again, leaving off different components each time until I tracked down the culprit.
As it turns out, my local development VM (and Visual Studio) pulled one of the components out of the GAC rather than the standard C:\Program Files (x86)\Microsoft BizTalk Server 2009\Pipeline Components
folder. This assembly did not match the component on the production environment.