.NET and Apache AXIS

I had thought that connecting .NET to other webservices stacks, using SOAP 1.1 and WSDL, was pretty straightforward. I thought that all of the nooks and crannies of that stuff had been pretty well explored, and that the interesting angles around .NET and Java interop were in the areas of emerging or more recently finalized WS-* specifications, like WS-Security, WS-Eventing, and so on. I was wrong.

There is still a bunch of people out there who want to do basic Interop between .NET, and, say, Apache AXIS. This post is dedicated to those people, you know who you are!

First thing I wanna say about this, is that AXIS v1.1 and .NET v1.1 both are products of a flawed environment. Both of them were created before RPC/Encoded was considered harmful, therefore both still support RPC/encoded SOAP. For some background on the issue, see

Next thing: if you want to get .NET to talk to AXIS v1.{0,1,2}, use Document/Literal. AXIS calls this "Document / wrapped / literal" or just "wrapped". In .NET (ASMX) this is the default. In Apache AXIS it is not. The way to do this is to specify a WSDD file to the AXIS service. 

Final recommendation: Use the WSDL-First approach. As an added bonus, when doing WSDL-First with Apache AXIS, you get the WSDD generated for you. 

The Best way to figure it all out is to follow some examples. AXIS ships with a math sample that includes a C# client. That's a good starting point. 

Or, See here for another: https://dinoch.dyndns.org:7070/axis/AboutBasics.jsp .

also maybe check the AXIS-users mailing list , or the wiki page on AXIS/.NET Interop for hints.