Share via


Incompatible Addressing with Reliable Messaging

This was a bug that we found a few weeks before V1 shipped but it was not deemed severe enough to fix at the time. I know that one customer has hit this while experimenting and it's pretty easy to understand what's going wrong once you hear the details.

The bug affects the use of the reliable messaging channel with different message addressing versions. The reliable messaging channel captures a copy of the first set of headers it sees used for addressing in the application domain. Later, the channel replays those same headers any time it needs to use addressing again. If you have a second endpoint that creates a reliable messaging channel, then that channel will also use the cached headers. However, the other endpoint has a different binding and could be using a different version of message addressing. Having the wrong version of addressing headers typically results in a protocol fault complaining about the version mismatch.

It seems unlikely that this would block development of a real application. You have to be using a custom binding to hit this because all of our standard bindings that support reliable messaging use the same addressing version. The workaround is that if you need to have multiple service endpoints that both use reliable messaging but have different message addressing versions, then you should create a new application domain to keep the endpoints separate.

Next time: Manually Injecting a ListenUri