¿Es posible obtener la dirección IP de la persona que llama a través del HubCallerContext? ¿O tendré que pasar por HttpContext.Current ... ServerVariables para obtenerlo?SignalR Obtener la dirección IP de la persona que llama
Respuesta
El problema con HttpContext.Request.Current.UserHostAddress
es que HttpContext.Request.Current
es nulo si es autohospedado.
La forma en que lo consigue en la versión actual de SignalR (la rama 'dev' a partir del 14/12/2012) es así:
protected string GetIpAddress()
{
var env = Get<IDictionary<string, object>>(Context.Request.Items, "owin.environment");
if (env == null)
{
return null;
}
var ipAddress = Get<string>(env, "server.RemoteIpAddress");
return ipAddress;
}
private static T Get<T>(IDictionary<string, object> env, string key)
{
object value;
return env.TryGetValue(key, out value) ? (T)value : default(T);
}
Usted solía ser capaz de conseguirlo a través de Context.ServerVariables
:
protected string GetIpAddress()
{
var ipAddress = Context.ServerVariables["REMOTE_ADDR"];
return ipAddress;
}
Eso fue mucho más simple, pero lo eliminaron por razones que no entiendo del todo.
Supongamos que nadie está utilizando la rama dev (a menos que se indique explícitamente), ya que representa un punto en el tiempo sha que puede cambiar en cualquier momento entre ahora y una versión. – davidfowl
Marcando esto como la respuesta ya que Owin ahora es fundamentalmente parte de ASP.NET SignalR. –
Según source code no, no hay tal propiedad en HubCallerContext.
¿Has probado HttpContext.Request.UserHostAddress? Consulte este ejemplo aquí http://jameschambers.com/blog/continuous-communication-bridging-the-client-and-server-with-signalr
No creo que sea bastante lo que estaba esperando, pero debería resolver el problema de todos modos.
Con SignalR 2.0, Context.Request
ya no tiene el Items
(al menos no lo que vi). Me di cuenta de cómo funciona ahora. (Se puede reducir el/la parte más si a un operador ternario, si te gusta eso.)
protected string GetIpAddress()
{
string ipAddress;
object tempObject;
Context.Request.Environment.TryGetValue("server.RemoteIpAddress", out tempObject);
if (tempObject != null)
{
ipAddress = (string)tempObject;
}
else
{
ipAddress = "";
}
return ipAddress;
}
Una respuesta completa. En su forma más simple podría usar 'Context.Request.Environment [" server.RemoteIpAddress "]' –
Otra forma es
var serverVars = Context.Request.GetHttpContext().Request.ServerVariables;
var Ip = serverVars["REMOTE_ADDR"];
- 1. Descanso: cómo obtener la dirección IP de la persona que llama
- 2. ¿Cómo obtengo la dirección IP de la persona que llama en un WebMethod?
- 3. Obtener el módulo de la persona que llama en Ruby
- 4. ¿Cómo obtener la dirección IP?
- 5. Cómo obtener la dirección IP de sockaddr
- 6. Obtener la dirección IP de los visitantes
- 7. Obtener el nombre de host de la persona que llama en WCF
- 8. ¿Cómo obtener la dirección IP desde $ SSH_CLIENT
- 9. Obtener la dirección IP 'externa' en Java
- 10. Obtener la dirección IP del usuario
- 11. ¿Cómo obtener la dirección IP del servidor?
- 12. Dirección IP de sk_buff
- 13. Obtener mi dirección de IP
- 14. ¿Cómo utilizar inspeccionar para obtener la información de la persona que llama de callee en Python?
- 15. Reemplazando "nuevo" y registrando datos sobre la persona que llama
- 16. ¿Inyectar variables en el alcance de la persona que llama?
- 17. ¿Cómo obtener la dirección IP del servidor en ASP.NET?
- 18. Obteniendo la dirección IP local
- 19. Obtener la dirección IP con la cadena URL? (Java)
- 20. Burlándose: ¿cómo hago una excepción en la persona que llama?
- 21. ¿Por qué recibo :: 1 como dirección IP en ASP.Net .. y cómo obtener la dirección IP correcta?
- 22. Obtener el nombre de host de la dirección IP
- 23. Obtener el país de la dirección IP con PHP
- 24. Obtener la dirección IP de un socket remoto Endpoint
- 25. ¿Cómo obtener la dirección IP del cliente de escritorio remoto?
- 26. Obtenga la dirección IP de la máquina
- 27. Obtener traza la función en bash desde el manejador de trampa (usando persona que llama)
- 28. Python: cómo obtener el nombre del método de la persona que llama en el método llamado?
- 29. ¿Es posible obtener el contexto de la persona que llama en javascript?
- 30. ¿Cómo obtener la dirección IP del emulador de Android?
Por lo tanto, es la respuesta es no? – funGhoul