UWInfo Blog
發表新文章
[Join] | [忘記密碼] | [Login]
搜尋

搜尋意見
文章分類-sean
[所有文章分類]
  • ASP.NET (0)
  • ASP.NET2.0 (0)
  • ASP.NET4.0 (1)
  • JavaScript (1)
  • jQuery (0)
  • FireFox (0)
  • UW系統設定 (0)
  • SQL (5)
  • SQL 2008 (0)
  • mirror (0)
  • SVN (0)
  • IE (1)
  • IIS (0)
  • IIS6 (0)
  • 閒聊 (1)
  • W3C (0)
  • 作業系統 (0)
  • C# (0)
  • CSS (0)
  • FileServer (0)
  • HTML 5 (0)
  • CKEditor (0)
  • UW.dll (0)
  • Visual Studio (0)
  • Browser (0)
  • SEO (0)
  • Google Apps (0)
  • 網站輔助系統 (0)
  • DNS (0)
  • SMTP (0)
  • 網管 (0)
  • 社群API (0)
  • SSL (0)
  • App_Inventor (0)
  • URLRewrite (0)
  • 開發工具 (1)
  • JSON (0)
  • Excel2007 (1)
  • 試題 (0)
  • LINQ (0)
  • bootstrap (0)
  • Vue (1)
  • IIS7 (1)
  • foodpanda (0)
  • 編碼 (2)
  • 資安 (0)
  • Sourcetree (0)
  • MAUI (0)
  • CMD (0)
  • my sql (0)
所有文章分類
[sean的分類]
  • ASP.NET (48)
  • ASP.NET2.0 (15)
  • ASP.NET4.0 (34)
  • JavaScript (49)
  • jQuery (26)
  • FireFox (4)
  • UW系統設定 (3)
  • SQL (39)
  • SQL 2008 (25)
  • mirror (4)
  • SVN (4)
  • IE (9)
  • IIS (20)
  • IIS6 (1)
  • 閒聊 (7)
  • W3C (6)
  • 作業系統 (9)
  • C# (24)
  • CSS (12)
  • FileServer (1)
  • HTML 5 (11)
  • CKEditor (3)
  • UW.dll (13)
  • Visual Studio (16)
  • Browser (8)
  • SEO (1)
  • Google Apps (3)
  • 網站輔助系統 (4)
  • DNS (5)
  • SMTP (4)
  • 網管 (11)
  • 社群API (3)
  • SSL (4)
  • App_Inventor (1)
  • URLRewrite (2)
  • 開發工具 (6)
  • JSON (1)
  • Excel2007 (1)
  • 試題 (3)
  • LINQ (1)
  • bootstrap (0)
  • Vue (3)
  • IIS7 (3)
  • foodpanda (2)
  • 編碼 (2)
  • 資安 (3)
  • Sourcetree (1)
  • MAUI (1)
  • CMD (1)
  • my sql (1)
最新回應
  • \xE9 MYSQL Insert error
    比較新版的 MySql 好像預設都是 utf8 哦. 所以一率不用加 N 的...more
  • in篩選欄位中被逗點分隔的資料
    標題可以加上 "sp_executesql" .....more
  • SQL injection 也會發生在 useragent
    那要檢查一下網站寫入 UA 有無拼字串基本上 能塞入HTTP HEADER 都可能是假資料...more
  • IE 不支援 Ajax url:"" 填空白
    試著加一個問號 ? 測看看...more
標籤
  • ip[t]
  • 104
  • 726
  • css,
  • c
  • MIBs
  • WebForms
  • 8053
  • ordermain[
  • 9160
  • if
  • 2909
  • -8519
  • amazon
  • 17.9CVas
  • [t]
  • 日期
  • image
  • 8360
  • window
  • 212
  • -9825 ORDE
  • ad
  • 0
  • sVN
  • Rf
  • 0 order by
  • 72
  • asp.net OR
  • exception
  • post
  • ARR
  • sql
  • ajaxupload
  • Pay介接
  • 8468
  • 9818
  • gn.linepay
  • 0KeeTeam
  • Certificat
  • bike
  • tuple
  • sqlcmd
  • Ubuntu
  • .
  • 問題
  • replace
  • sa
  • a
  • extension
IIS 7.0 ClientIP() 會抓到 IPv6 而非 IPv4
IIS 7.0 之後 
用 HttpContext.Current.Request.UserHostAddress 抓的IP會是 
類似 fe80::b148:cddc:81cd:fd10%2 
這樣的IPv6 位址
如果要抓 IPv4 要特別改寫

參考
https://dotblogs.com.tw/hunterpo/2011/03/21/21991


HttpContext.Current.Request.UserHostAddress


暫時的替代方法
public static string GetClientIPv4() { string ipv4 = String.Empty; foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP())) { if (ip.AddressFamily.ToString() == "InterNetwork") { ipv4 = ip.ToString(); break; } } if (ipv4 != String.Empty) { return ipv4; } // 原作使用 Dns.GetHostName 方法取回的是 Server 端資訊,非 Client 端。 // 改寫為利用 Dns.GetHostEntry 方法,由獲取的 IPv6 位址反查 DNS 紀錄, // 再逐一判斷何者屬 IPv4 協定,即可轉為 IPv4 位址。 foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList) //foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName())) { if (ip.AddressFamily.ToString() == "InterNetwork") { ipv4 = ip.ToString(); break; } } return ipv4; } /// <summary> /// 取得客戶端主機位址 /// </summary> public static string GetClientIP() { if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"]) { return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else { return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } }

sean, 2019/6/27 下午 06:47:31
文章分類:IIS7
標籤:IIS7,IIS,IP,ClientIP,UserHostAddress
darren, Reiko, sean 已閱讀.
意見
No Data.
Comment:
*Nickname:
E-mail:
Blog URL:
  • *意見內容
  • 預覽
#Nickname#
2019/6/27 下午 06:47:31
#CommentContent#
*請輸入驗證碼: 看不懂,換張圖
 
~ Uwinfo ~