工程師 Mars
工程師 Mars

在這裡我想跟你分享如何成為一位稱職的軟體工程師, 你將會學到許多網站架設、WordPress、程式交易、資料庫等技能。 讓你在職場表現令人讚賞,年年升職加薪。 轉職成功,走在科技路上,永遠不怕被淘汱。 提昇技術能力,接案賺外快,自己為自己加薪。 個人技術 Blog 連結 https://blog.hungwin.com.tw/

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

在建置網頁的時候,有需要會需要知道來源端它的環境是什麼,可能是需要記錄來源的 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();

執行後呈現的畫面

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

相關學習文章

原始文章連結: https://blog.hungwin.com.tw/asp-net-mvc-request/

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论