Laden...

client ip in einem webservice bekommen

Erstellt von Fabse vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.469 Views
F
Fabse Themenstarter:in
124 Beiträge seit 2004
vor 19 Jahren
client ip in einem webservice bekommen

ich habe eine c# anwendung die einen webservice zur verfügung stellt:

 RemotingConfiguration.RegisterWellKnownServiceType(
typeof(ipClass), "ipClass", WellKnownObjectMode.SingleCall);

chan = new HttpChannel(port);
ChannelServices.RegisterChannel(chan);

meine klasse ipClass ist von MarshalByRefObject abgeleitet. das geht auch alles. da is ja noch mehr drin in der klasse. das grundkonzept geht also alles. nun will ich aber die ip des clienten innerhalb eines aufrufes erhalten ohne, dass der client diese explizit mit übermittelt. mein prob ist aber, dass ich keine Context-Instanz erhalte, auf die ich irgendwie zugreifen kann.

HttpContext.Current.Request.UserHostAddress;
führt zu einer NullRefException...

this.Context.Request.UserHostAddress;
kann ich nicht machen, weil meine Klasse nicht von WebService abgeleitet ist.

leite ich meine klasse von webservice ab, dann geht gar nichts mehr. dann sagt mir der webservice-tester beim generieren der proxyklasse, dass keine uri angegeben ist oder diese leer ist.

andere wege habe ich auch nach längerem googln nicht finden können.

1.373 Beiträge seit 2004
vor 19 Jahren

Ich bin zwar alles andere als ein WebService Experte, aber das sieht mir mehr nach remoting aus. Vielleicht hilft dir das: Client IP Adresse auslesen

Bei WebServices gilt übrigens:

XML-Webdienstmethoden, deren OneWay-Eigenschaft SoapRpcMethodAttribute oder SoapDocumentMethodAttribute auf true festgelegt ist, können nicht auf ihren HttpContext zugreifen. Daher wird beim Zugriff auf eine beliebige Eigenschaft der WebService-Klasse über diese XML-Webdienstmethode NULL (Nothing in Visual Basic) zurückgegeben.

Wenn Sie XML-Webdienstmethoden von .NET Framework, Version 1.0, verwenden, auf die das SoapRpcMethodAttribute-Attribut oder das SoapDocumentMethodAttribute-Attribut angewendet wird, wobei die OneWay-Eigenschaft auf true festgelegt ist, kann unter Verwendung der statischen Current-Eigenschaft nicht auf den HttpContext zugegriffen werden. Leiten Sie für den Zugriff auf HttpContext die Klasse ab, indem Sie die XML-Webdienstmethode aus WebService implementieren, und greifen Sie auf die Context-Eigenschaft zu.

MfG VizOne

F
Fabse Themenstarter:in
124 Beiträge seit 2004
vor 19 Jahren

ok danke den thread, den kenne ich, ich werd das mit dem sinkprovier auch gleich mal nochmal probieren.

aber wie ist die korrekte vorgehensweise, wenn ich jetzt meine klasse von WebService ableite? dann brauch ich doch nen iis und asp.net drauf oder? klingt für mich nach overkill.

aber meine anwendung macht nen webservice!

http://inanisas:10240/ipClass?wsdl
^^ist ein gültiger wsdl-endpoint bei mir und wie gesagt, der webservice tester macht alles andere auch wunderbar.

also kann ich kein remoting gemacht haben ?!?