Again in the scalability lab recently we were seeing a number of errors being raised by the SOAP adapter – some of them were down to the remote Web Service cowering in the corner when the might of BizTalk hit it all at once J
We were seeing a mixture of Timeout errors and the following being logged by the SOAP Adapter to the Event Viewer:
The “SOAP” adapter is suspending an outbound message going to destination URL: “http://YourServer/WS.asmx”. Details: “Object reference not set to an instance of an object.”
To cut a long story short, we managed to eradicate a number of these by ensuring the remote Web Service had a method level try/catch block to ensure any unhandled exceptions didn’t get propagated back but we drew a blank on the remainder of them. Cross referencing the errors with the IIS log revealed that the calls didn’t appear to be making it to the remote server.
This doesn’t necessarily apply in all cases but the connection limit as detailed in this posting seemed to be the issue, we raised the number from 2 and they all went away – it’s not a particularly helpful error message (and could occur due to other reasons of course) but I thought it would be worth posting for future reference. I'm guessing that the Threads are waiting to dispatch the SOAP call on the wire but get's stuck in a queue waiting (due to the concurrent connection limit), it then times out/gives up hence the error.
As ever, if your calling Web Services ensure you’ve got the SOAP Adapter in a separate host to the Orchestrations, otherwise you’ll get thread pool starvation problems.