We are currently in Performance testing with an enterprise solution made with .NET 2.0 and C#. For the record, it consumes several Java services and interfaces with a few other third party systems. When we first set up the performance site, we were using three load balanced web servers and three load-= balanced service servers using ssl between each hope. This turned out to cause a significant performance hit, and to get around it ssl was turned off between the service load balancer and the service servers. The load balancer is hardware based and can handle the certificate itself.
Unfortunately, this caused a little problem:
Microsoft.Web.Services3.Addressing.AddressingFault: Destination Unreachable ---> System.Exception: WSE846: The <wsa:To> header must match the actor URI value of the web service. The actor URI value can be explicitly specified using SoapActorAttribute on the ASMX class. In the absence of the attribute, the actor URI is assumed to be equal to the HTTP Request Url of the incoming message. The <To> header received contained "https://application.myuri.com/SecurityService.asmx" while the receiver is expecting "http://application.myuri.com/SecurityService.asmx".
It appears that the load balancer doesn't handle the <wsa:To> header which causes the application to fail. Since the application is deployed to multiple environments and the services could possibly be consumed by other applications, the solution is to assign the following attribute to every service: [SoapActor("*")].
