在建置网页的时候,有时候会需要知道来源端它的环境是什麽,可能是需要记录来源的 IP,或是依照来源的作业系统而显示对应的画面。
在 ASP.Net MVC 里面想要知道来源端的资讯,全部都放在 Request 这个物件里面。
接下来我就展示 Request 内常用的资讯,如果想了解 Request 内的资讯,我在後面也放上完整取得 Rquest 内的资讯。
常用资讯里面我列出了 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 内所有的资讯,可以用此语法查看
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 种实用方法(附范例下载)
前言 今天的题目在这里: 848. Shifting Letters,被归类为medium,乍看之下...
什麽是挖矿?需要准备铁镐吗? 说到挖矿,可能很多人会想到的是显卡的涨价,让大家都觉得挖矿就是用显卡来...
元件介绍 Progress circle 跟上一篇 Progress bar 一样是能够展示当前进度...
因为看到有人反应,重覆登出登入,会造成记忆体使用量增加,这实在是让人太好奇了,所以就想来实测一下。但...
Vue.js介绍 是一个用於建立使用者介面的开源JavaScript框架,也是一个建立单页应用的We...