| 

.NET C# Java Javascript Exception

3
Hallo,
ich versuche einen Webservice mittels SOAP aus C# heraus aufzurufen. Parameter sind User und Passwort.
Bei erfolgreicher Anmeldung sendet der Webservice im Header der Soap-Nachricht eine SessionId.
Das Problem ist, im Client diese SessioniD aus der Nachricht zu bekommen.

Webservice im Client
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="SystemServiceBinding", Namespace="http://www.test.com/")]
public partial class SystemServiceService : System.Web.Services.Protocols.SoapHttpClientProtocol {

/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("loginResponse", Namespace="http://www.test-group.com/")]
public loginResponse login([System.Xml.Serialization.XmlElementAttribute("login", Namespace="http://www.test-group.com/")] login login1) {
object[] results = this.Invoke("login", new object[] {
login1});
return ((loginResponse)(results[0]));
}
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.test-group.com/")]
public partial class loginResponse {
}


Und zum Schluß noch die Soap Nachricht
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<test:sessionId xmlns:pilot="http://www.test-group.com/ >54b5892b-147e-4dd5-92f9-f45bcb5abaac</test:sessionId>
</env:Header>
<env:Body>
<loginResponse xmlns="http://www.test-group.com/"/>
</env:Body>
</env:Envelope>
28.09.2011
ChristianG 31 2
2 Antworten
0
Versuchs mal mit der SoapHeader Klasse und einem

SoapHeaderAttribute:
This attribute is applied to an XML Web service method or an XML Web service client to specify a SOAP header that the XML Web service method or XML Web service client can process.
28.09.2011
ffordermaier 8,4k 3 9
Das hat leider nicht funktioniert
ChristianG 28.09.2011
0
Das SoapHeader Attribut hab ich schon versucht. Hat leider keinen Erfolg gebracht.
Ich hab folgende Klasse für den Header erstellt
public class MyHeader : SoapHeader {
public string SessionId;
}

folgende Zeilen in der Klasse SystemServiceService geändert
public MyHeader myHeader;

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[SoapHeader("myHeader", Direction=SoapHeaderDirection.In)]
[return: System.Xml.Serialization.XmlElementAttribute("loginResponse", Namespace="http://www.test-group.com/")]
public loginResponse login([System.Xml.Serialization.XmlElementAttribute("login", Namespace = "http://www.test-group.com/")] login login1)
{
object[] results = this.Invoke("login", new object[] {
login1});
return ((loginResponse)(results[0]));
}

Auch nach erfolgreichem login war myheader im nnull.
28.09.2011
ChristianG 31 2
Versuch mal wie in der Doku zur SoapHeader Klasse (Link siehe mein Post oben) mithilfe von SoapUnknownHeader an alle Header ranzukommen und schau ob überhaupt etwas ankommt.
Probier auch mal die Direction=SoapHeaderDirection.Out zu verwenden, laut Doku ist Out in Richtung Client.
ffordermaier 28.09.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH