BizTalk Services: Dear MessageSender.exe, we're breaking up

While in Redmond for the Integrate 2014 Summit, I took the opportunity to politely ask Sameer to help me with a MessageSender.exe problem. Here's the scenario:

I created an Azure BizTalk Services project with an XML Bridge and a SQL Server LOB Target. The project built and deployed successfully to my BizTalk Service. When sending a test message with MessageSender.exe, the following error occurred:

Webexception received while sending the data
An exception occured: Object reference not set to an instance of an object.

I used Azure Storage Explorer to connect to my Storage account and review the logs. Now that the problem is fixed (more on that later), these errors may not be relevant. Either way, here are the errors:

The System event log shows a ServiceBus error that repeats about every 30 seconds:

PreciseTimeStamp:              11/17/2014 8:35:08 PM
EventRecordID:                    33465
Event Data:                            <Trc Code="ServiceBusManagementUnspecified" Cmp="PipelineManagementAsyncResult" Call="PipelineManagementAsyncResult" Prj="Send" TID="479bb845-bde3-401d-97a9-1ae7f38043d0" Msg="Unauthorized request. Token required" Ex="" UTC="2014-11-17T20:35:08.483Z" />

PreciseTimeStamp:              11/17/2014 8:35:08 PM
EventRecordID:                    33466
Event Data:                            ControlEndpoint. RequestId=479bb845-bde3-401d-97a9-1ae7f38043d0_G1. Error=Unauthorized User.

PreciseTimeStamp:              11/17/2014 8:35:08 PM
EventRecordID:                    33467
Event Data:                            <Trc Code="ServiceRegistryProtocolHandlerEndProcessMessageFailure" Cmp="" Call="" Prj="" TID="" Msg="" Ex="Microsoft.Cloud.ServiceBus.Common.Management.Exceptions.ManagementException : Unauthorized request. Token required&#xD;&#xA;&#xD;&#xA;Server stack trace: &#xD;&#xA;  

 

The Application log shows the same error about every 2 minutes:

<Trc Code="ServiceBusManagementUnspecified" Cmp="PipelineManagementAsyncResult" Call="PipelineManagementAsyncResult" Prj="Send" TID="a228615c-6724-4438-85d6-0739f942003c" Msg="Unauthorized request. Token required" Ex="" UTC="2014-11-17T22:20:09.079Z" />

 

And the following error every hour:

<Trc Code="UsageFailedToInitialize" Cmp="" Call="" Prj="" TID="" Msg="Couldn't download DatacenterInfo.xml from Blob." Ex="Microsoft.Cloud.Common.AzureStorage.StorageClientException : The specified container does not exist.
---&gt; System.Net.WebException : The remote server returned an error: (404) Not Found.&#xD;&#xA

 

So Sameer says, install this:

  1. In my Visual Studio project, go to the Tools menu, and select Extensions and Updates.
  2. Select Online.
  3. In Search, type BizTalk.
  4. Select BizTalk Service Explorer from the list and download/install.

In Server Explorer, Windows Azure BizTalk Services is listed. You may have to close/reopen Visual Studio for it to display:

 

Right-click Windows Azure BizTalk Services and click Add BizTalk Service. Enter your deployment name and Access Control values:

 

Now, send a test message:

  1. Right-click the bridge and select Send Test Message.
  2. In the window, Load your message, and select Send.

The test message was successfully sent and the SQL table was updated.

 

Using this tool, you can also debug your message flow:

1. Right-click the bridge and select Debug.

2. Enter your Service Bus relay values to open the tool:

3. Click Load Message and then click Send Message.

4. The tool steps through the different stages and when a stage completes successfully, green displays:

5. Click Continue to move through the next stages, reviewing your status and message body as you go. If a stage or pipeline fails, red is displayed. The Tracking events are also listed in Server Explorer:

 

I don't know why MessageSender returned the error (and continues to error) but BizTalk Service Explorer has my vote.