iT邦幫忙

0

[ASP.Net MVC] 取得 Request 常用資訊 (IP, 作業系統, 瀏覽器, 呼叫網址)

Mars 2021-08-26 09:15:432556 瀏覽
  • 分享至 

  • xImage
  •  

在建置網頁的時候,有時候會需要知道來源端它的環境是什麼,可能是需要記錄來源的 IP,或是依照來源的作業系統而顯示對應的畫面。
在 ASP.Net MVC 裡面想要知道來源端的資訊,全部都放在 Request 這個物件裡面。
接下來我就展示 Request 內常用的資訊,如果想了解 Request 內的資訊,我在後面也放上完整取得 Rquest 內的資訊。

Request 常用資訊

常用資訊裡面我列出了 5 個項目,分別是來源 IP, 作業系統, 瀏覽器, 呼叫網址等資訊。
看看執行的畫面

程式碼

StringBuilder sbMsg = new StringBuilder();

sbMsg.Append("來源IP: " + this.GetClientIP() + "<br>");
sbMsg.Append("來源系統: " + this.GetUserPlatform() + "<br>");
sbMsg.Append("來源瀏覽器: " + this.GetClientBrowserVersion() + "<br>");
sbMsg.Append("來源相對網址: " + Request.CurrentExecutionFilePath + "<br>");
sbMsg.Append("來源絕對網址: " + Request.Url.AbsoluteUri + "<br>");

ViewData["sbMsg"] = sbMsg.ToString();

方法程式碼

/// <summary>
/// 來源 IP
/// </summary>
/// <returns></returns>
public string GetClientIP()
{
	string ClientIP = "";
	if (Request.ServerVariables["HTTP_VIA"] == null)
	{
		ClientIP = Request.ServerVariables["REMOTE_ADDR"].ToString();
	}
	else
	{
		ClientIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
	}
	ClientIP = ClientIP.Replace("::1", "127.0.0.1");
	return ClientIP;
}

/// <summary>
/// 取得使用者系統
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public String GetUserPlatform()
{
	var ua = Request.UserAgent;

	if (ua.Contains("Android"))
		return string.Format("Android {0}", GetMobileVersion(ua, "Android"));

	if (ua.Contains("iPad"))
		return string.Format("iPad OS {0}", GetMobileVersion(ua, "OS"));

	if (ua.Contains("iPhone"))
		return string.Format("iPhone OS {0}", GetMobileVersion(ua, "OS"));

	if (ua.Contains("Linux") && ua.Contains("KFAPWI"))
		return "Kindle Fire";

	if (ua.Contains("RIM Tablet") || (ua.Contains("BB") && ua.Contains("Mobile")))
		return "Black Berry";

	if (ua.Contains("Windows Phone"))
		return string.Format("Windows Phone {0}", GetMobileVersion(ua, "Windows Phone"));

	if (ua.Contains("Mac OS"))
		return "Mac OS";

	if (ua.Contains("Windows NT 5.1") || ua.Contains("Windows NT 5.2"))
		return "Windows XP";

	if (ua.Contains("Windows NT 6.0"))
		return "Windows Vista";

	if (ua.Contains("Windows NT 6.1"))
		return "Windows 7";

	if (ua.Contains("Windows NT 6.2"))
		return "Windows 8";

	if (ua.Contains("Windows NT 6.3"))
		return "Windows 8.1";

	if (ua.Contains("Windows NT 10"))
		return "Windows 10";

	//fallback to basic platform:
	return Request.Browser.Platform + (ua.Contains("Mobile") ? " Mobile " : "");
}

/// <summary>
/// 取得遠端呼叫者瀏覽器版本
/// </summary>
/// <returns></returns>
public string GetClientBrowserVersion()
{
	HttpBrowserCapabilitiesBase bc = Request.Browser;
	string brow_ver = bc.Browser + " " + bc.Version;
	return brow_ver;
}

列出所有 Request 資訊

如果想要完整了解 Request 內所有的資訊,可以用此語法查看

StringBuilder sbRequest = new StringBuilder();
for (int i = 0; i < Request.Headers.Count; i++)
{
	sbRequest.AppendLine(Request.Headers.GetKey(i).ToString() + "=" + Request.Headers[i] + "<br>");
}
for (int i = 0; i < Request.ServerVariables.Count; i++)
{
	sbRequest.AppendLine(Request.ServerVariables.GetKey(i).ToString() + "=" + Request.ServerVariables[i] + "<br>");
}
ViewData["sbRequest"] = sbRequest.ToString();

執行後呈現的畫面

顯示的資訊太多,後面就拍不到了,大家可以自己試試看喔。

相關學習文章

[C#] Base64 Convert.ToBase64String 基本轉碼及適用網址參數轉碼延伸應用
[C#] 取得證交所台股價格的 3 種實用方法(附範例下載)


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言