Có thể nhận địa chỉ IP của người gọi thông qua HubCallerContext không? Hoặc tôi sẽ phải đi qua HttpContext.Current ... ServerVariables để có được nó?SignalR Nhận địa chỉ IP của người gọi
Trả lời
Sự cố với HttpContext.Request.Current.UserHostAddress
là HttpContext.Request.Current
không có giá trị nếu bạn đang tự lưu trữ.
Cách bạn nhận được nó trong phiên bản hiện tại của SignalR (các 'dev' chi nhánh như của 2012/12/14) là như vậy:
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);
}
Bạn sử dụng để có thể có được nó thông qua Context.ServerVariables
:
protected string GetIpAddress()
{
var ipAddress = Context.ServerVariables["REMOTE_ADDR"];
return ipAddress;
}
Điều đó đơn giản hơn nhiều, nhưng chúng đã xóa vì lý do tôi không hiểu rõ.
Giả sử rằng không ai đang sử dụng nhánh dev (trừ khi được tuyên bố rõ ràng) vì nó đại diện cho một điểm trong thời gian sha có thể thay đổi bất cứ lúc nào giữa bây giờ là một bản phát hành. – davidfowl
Đánh dấu đây là câu trả lời vì Owin hiện nay là một phần của ASP.NET SignalR. –
Theo source code không, không có tài sản như vậy trong HubCallerContext.
Bạn đã thử HttpContext.Request.UserHostAddress? Xem ví dụ này tại đây http://jameschambers.com/blog/continuous-communication-bridging-the-client-and-server-with-signalr
Đừng nghĩ rằng nó khá những gì bạn đang hy vọng nhưng sẽ giải quyết được vấn đề.
Với SignalR 2.0, Context.Request
không còn Items
nữa (ít nhất không phải những gì tôi thấy). Tôi đã tìm ra, nó hoạt động như thế nào bây giờ. (Bạn có thể giảm nếu/phần khác để một nhà điều hành ternary, nếu bạn như thế.)
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;
}
Câu trả lời đầy đủ. Ở dạng đơn giản nhất, bạn có thể sử dụng 'Context.Request.Environment [" server.RemoteIpAddress "]' –
cách khác là
var serverVars = Context.Request.GetHttpContext().Request.ServerVariables;
var Ip = serverVars["REMOTE_ADDR"];
- 1. Nhận địa chỉ IP của người dùng
- 2. Scala Chơi Khung nhận của người dùng địa chỉ ip
- 3. Cách nhận địa chỉ ip của khách hàng/người dùng?
- 4. Phần còn lại - cách nhận địa chỉ IP của người gọi
- 5. Nhận địa chỉ IP cục bộ
- 6. Cách lấy địa chỉ IP của người dùng bằng .net?
- 7. Nhận địa chỉ IP của máy chủ trong ASP.NET?
- 8. Đọc địa chỉ IP của người gọi trong WCF (OperationContext là null)?
- 9. Nhận địa chỉ ip wifi của tôi Android
- 10. Nhận địa chỉ IP của khách hàng ở Sinatra?
- 11. Nhận địa chỉ IP của giao diện trên Linux
- 12. Nhận địa chỉ IP của ứng dụng khách trong JSP
- 13. Địa chỉ IP từ sk_buff
- 14. Nhận địa chỉ IP riêng của người dùng Rook/Shiny trang
- 15. Địa chỉ IP C++ Dạng người có thể đọc được
- 16. Tăng địa chỉ IP
- 17. Nhận địa chỉ IP bằng chuỗi URL? (Java)
- 18. signalR - nhận tên người dùng
- 19. Địa chỉ IP trong MaskedTextBox?
- 20. Nhận địa chỉ IP công cộng (từ xa)
- 21. Nhận địa chỉ IP bằng cách sử dụng Action Script?
- 22. Làm cách nào để nhận địa chỉ IP?
- 23. Netty: nhận địa chỉ ip từ xa trong messageReceived
- 24. trim địa chỉ ip octet
- 25. Bảo mật WCF bằng địa chỉ IP của khách hàng
- 26. Làm cách nào để lấy địa chỉ vật lý (MAC) của địa chỉ IP bằng C#?
- 27. Nhận tên máy chủ từ địa chỉ IP
- 28. Nhận địa chỉ IP yêu cầu với Pyramid
- 29. Chặn địa chỉ IP của máy chủ Appengine?
- 30. Cách phát hiện ngôn ngữ của người dùng thông qua Địa chỉ IP của họ
Vì vậy, là câu trả lời không? – funGhoul