2009-06-04 7 views
4

Ist es möglich, Informationen über den verbindenden Client zu erhalten, wenn Sie Remoting für .net 2.0 verwenden? Ich möchte gerne Informationen über den verbindenden Client auf der Serverseite erhalten, damit ich entsprechend handeln kann? Dies ist eine kleine und sehr lokale Anwendung, die niemals mehr als maximal 10 gleichzeitig verbindende/anfragende Clients haben wird.Remoting - Informationen über den Client. C#

Client-Referenz in jeder Funktion übergeben? (oder irgendein Identifikator)? Ich könnte es so machen, aber ich würde es vorziehen, nur die Informationen vom Request/Connecting Client zu bekommen. IP-Adresse oder ähnliches wäre nett.

Grüße

Antwort

1

Diese question könnte die Antwort für Sie suchen.

Ich entfernte die Teile, die Ihnen wahrscheinlich egal sind und verließ den Teil, der tatsächlich die IPAddress ergreift.

public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack, 
    IMessage requestmessage, ITransportHeaders requestHeaders, 
    System.IO.Stream requestStream, out IMessage responseMessage, 
    out ITransportHeaders responseHeaders, out System.IO.Stream responseStream) 
{ 
    // Get the IP address and add it to the call context. 
    IPAddress ipAddr = (IPAddress)requestHeaders[CommonTransportKeys.IPAddress]; 
} 
0

This question zeigt die scheinbare Format eines URI, dh die URI Eigenschaft des ObjRef Sie von RemotingServices.GetObjRefForProxy erhalten, wenn Sie Übergeben Sie es ein Remote-Objekt. Die Zeichenfolge zwischen den ersten beiden Schrägstrichen ist eine Prozess-GUID, die den Client aus der Perspektive des lokalen Programms eindeutig identifiziert.

In meinem Fall brauchte ich nur einen Weg, um den Client zu identifizieren, nicht seine IP-Adresse (die sowieso mit einem Nicht-TCP-Kanal nicht gültig wäre), also funktionierte das für mich.