Hi Stefan, I am pasting a wsdl for your reference. Please see the embedded comments.
On the client side, C# needs to see the SessionID element in WSDL so that it can create member variable SessionID for the service. But Axis does not generate such a WSDL. Hence you need to modify the WSDL produced by Axis and manually add the SessionID element. Then you should use the modified WSDL in Visual Studio. Following is an example of the modified WSDL with the comments preceding the modifications. After you show this WSDL to Visual Studio, it will generate the proxy and you can retreive the Session ID by using authenticationService.SessionID. Hope this helps. Warm Regards, Abhinav Maheshwari <wsdl:definitions targetNamespace="http://tornado/portfolioip/services/AuthenticationService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns2="http://pair.biz.portfolioip.its.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns1="http://exception.services.portfolioip.its.com" xmlns:impl="http://tornado/portfolioip/services/AuthenticationService" xmlns:intf="http://tornado/portfolioip/services/AuthenticationService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:fip="http://foundationip.com/services" xmlns="http://schemas.xmlsoap.org/wsdl/"><wsdl:types><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exception.services.portfolioip.its.com"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="InvalidUsernameException"><sequence><element name="message" nillable="true" type="xsd:string"/></sequence></complexType><complexType name="InvalidPasswordException"><sequence><element name="message" nillable="true" type="xsd:string"/></sequence></complexType></schema><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://pair.biz.portfolioip.its.com"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="AuthenticationFacadeException"><sequence><element name="message" nillable="true" type="xsd:string"/></sequence></complexType></schema> <!-- added session ID element. The namespace must match the namespace in SessionHandler --> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foundationip.com/services"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="SessionID"> <sequence> <element name="ID" minOccurs="1" maxOccurs="1" type="xsd:string" /> </sequence> </complexType> </schema> <!-- end of session ID element --> </wsdl:types> <!-- added a header for session --> <wsdl:message name="sessionHeader"> <wsdl:part name="SessionID" type="fip:SessionID" /> </wsdl:message> <!-- end of session header --> <wsdl:message name="authenticateResponse"> </wsdl:message> <wsdl:message name="authenticateRequest"> <wsdl:part name="userName" type="xsd:string"/> <wsdl:part name="password" type="xsd:string"/> </wsdl:message> <wsdl:message name="InvalidUsernameException"> <wsdl:part name="fault" type="tns1:InvalidUsernameException"/> </wsdl:message> <wsdl:message name="AuthenticationFacadeException"> <wsdl:part name="fault" type="tns2:AuthenticationFacadeException"/> </wsdl:message> <wsdl:message name="InvalidPasswordException"> <wsdl:part name="fault" type="tns1:InvalidPasswordException"/> </wsdl:message> <wsdl:portType name="AuthenticationService"> <wsdl:operation name="authenticate" parameterOrder="userName password"> <wsdl:input name="authenticateRequest" message="impl:authenticateRequest"/> <wsdl:output name="authenticateResponse" message="impl:authenticateResponse"/> <wsdl:fault name="AuthenticationFacadeException" message="impl:AuthenticationFacadeException"/> <wsdl:fault name="InvalidPasswordException" message="impl:InvalidPasswordException"/> <wsdl:fault name="InvalidUsernameException" message="impl:InvalidUsernameException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="AuthenticationServiceSoapBinding" type="impl:AuthenticationService"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="authenticate"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="authenticateRequest"> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/portfolioip/services/AuthenticationService"/> </wsdl:input> <wsdl:output name="authenticateResponse"> <!-- Authentication service returns a Session ID. If a service needs a session ID during request, this element should also be present in request definition --> <wsdlsoap:header use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" message="impl:sessionHeader" part="SessionID" /> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://tornado/portfolioip/services/AuthenticationService"/> </wsdl:output> <wsdl:fault name="AuthenticationFacadeException"> <wsdlsoap:fault use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://tornado/portfolioip/services/AuthenticationService"/> </wsdl:fault> <wsdl:fault name="InvalidPasswordException"> <wsdlsoap:fault use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://tornado/portfolioip/services/AuthenticationService"/> </wsdl:fault> <wsdl:fault name="InvalidUsernameException"> <wsdlsoap:fault use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://tornado/portfolioip/services/AuthenticationService"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="AuthenticationServiceService"> <wsdl:port name="AuthenticationService" binding="impl:AuthenticationServiceSoapBinding"> <wsdlsoap:address location="http://tornado/portfolioip/services/AuthenticationService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> -----Original Message----- From: Srinivas Vemula [mailto:[EMAIL PROTECTED] Sent: Thursday, March 11, 2004 3:29 PM To: [EMAIL PROTECTED] Subject: Re: C# Cllient , Axis Server, Session Management Hi Stefan, <complexType name="SessionID"> <sequence> <element name="ID" minOccurs="1" maxOccurs="1" type="xsd:string" /> </sequence> </complexType> </schema> <!-- end of session ID element --> </wsdl:types> See if this works.. srini Stefano Sambi wrote: I'm trying to use your SessionHandler to manage session between C# client and Axis web service but I do not succeed to set the SOAP header in my wsdl. Can you send me an example of your wsdl? And also how do you manage sessions in your C# client? Here it's my changes to wsdl that don't work: I added the definition of sessionID element in 'Types' section: <wsdl:types> <xsd:schema targetNamespace=http://localhost/axis/services/MyService> <xsd:complexType name="Session"> <xsd:sequence> <xsd:element name="sessionID"> <xsd:complexType> <xsd:sequence> <xsd:element name="ID" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> I added the definition of soap header message in 'Messages' section: <wsdl:message name="soapHeader"> <wsdl:part name="SessionID" type="impl:Session" xmlns:impl=http://localhost/axis/services/MyService/> </wsdl:message> and I added the soap header binding to my operation in 'Binding' section: <wsdlsoap:header message="impl:soapHeader" part="SessionID" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> Thanks Stefano ----- Original Message ----- From: "Abhinav Maheshwari" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, February 16, 2004 3:15 PM Subject: RE: C# Cllient , Axis Server, Session Management Hi Srinivas, You need to use the SessionHandler to maintain session information but there are problems with using the one supplied with Axis. This is a modified version of the SessionHandler supplied with Axis which can be used. Also, you need to manually put the SOAP Header in the WSDL generated by Axis so that Visual Studio can generate the code for session variables. Regards, Abhinav -----Original Message----- From: Srinivas Vemula [mailto:[EMAIL PROTECTED] Sent: Monday, February 16, 2004 6:30 PM To: [EMAIL PROTECTED] Subject: C# Cllient , Axis Server, Session Management Hi All, I am new to using axis. We are trying to communciate from a .NET C# client. Can any one let me know, how to track sessions in this scenario? Basically, we would like to put some authorization info in a session object as the first call from the client will be for authentication. After that client will call other Axis (web) services for executing some more tasks. We would like to check for the authorization information for subsequent calls from the same client and deny services if we dont find the relevant information in the session object . Any help or pointers to solve this? Thank you all for your help and time. srini -- Srinivas Vemula +91 40 23547826- Ext 201 Associate Consultant +91 40 23541447 (Fax) Mensamind +91 98497-42720 (Mobile) Hyderabad India http://www.mensamind.com DISCLAIMER The information contained in this e-mail is confidential and intended for the named recipient(s) only. If you are not an intended recipient of this email you must not copy, distribute or take any further action in reliance on it. You should delete it and notify the sender immediately. -- Srinivas Vemula +91 40 23547826- Ext 201 Associate Consultant +91 40 23541447 (Fax) Mensamind +91 98497-42720 (Mobile) Hyderabad India http://www.mensamind.com DISCLAIMER The information contained in this e-mail is confidential and intended for the named recipient(s) only. If you are not an intended recipient of this email you must not copy, distribute or take any further action in reliance on it. You should delete it and notify the sender immediately.