2014-04-28 36 views

Trả lời

3

Hãy thử sử dụng đoạn mã sau

System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
+0

Xin chào @Neel Tôi đã sử dụng mã được đề cập ở trên nhưng tôi nhận được văn bản trống ... Bạn đã từng gặp phải điều này trước đây chưa? Bất kỳ giúp đỡ? –

+0

Tôi sẽ phải kiểm tra – Neel

4

Tùy thuộc vào nơi bạn đang có.

Bộ điều khiển:

ControllerContext.HttpContext.Request.UserHostAddress; 

Razor View:

@Request.UserHostAddress 

mẫu:

Không sử dụng System.Web.HttpContext vì nó rất khó, nếu không nói là không thể kiểm tra đơn vị. Thay vào đó, hãy chuyển giá trị qua bộ điều khiển của bạn.

Html Helper:

public static MvcHtmlString Ip(this HtmlHelper html) 
{ 
    string html = html.ViewContext.RequestContext.HttpContext.Request.UserHostAddress; 
    return MvcHtmlString.Create(html); 
} 

Hãy ghi nhớ, do sự đơn giản trong những ví dụ, tôi đã không làm bất kỳ null-kiểm tra.

+0

Iam lưu trữ trang web của tôi trong máy chủ, Bằng cách sử dụng mã này, chỉ nhận được địa chỉ IP máy chủ đó. Nhưng tôi muốn người dùng địa chỉ ip – shan

+0

Điều này không còn đúng trong ASP.NET 5 [Core 1.0 (vnext)]: ( – ppumkin

+0

@ppumkin Cảm ơn bạn đã đứng đầu. Ngoài ra, tôi phải bình luận câu trả lời của riêng tôi rằng System.Web.HttpContext là thực sự dễ dàng để thử nghiệm với Microsoft Fakes mà tàu với VS Premium và lên.Nhưng tôi sẽ không thay đổi câu trả lời của tôi vì tôi vẫn nghĩ rằng nó có liên quan để tránh xa.Đặc biệt là với vNext đó là cắt đứt quan hệ với System.Web. –

Các vấn đề liên quan