1、Asp.Net Core 2.0版本中目前HttpRequest是個抽象類html
在控制器或視圖上下文中獲取到的 Request對象,是 DefaultHttpRequest的實例。linux
定義 如圖 :json
2、經常使用屬性說明:負載均衡
1.獲取請求 協議:Request.Protocol,目前多數是http1.0post
2.獲取url的Scheme:Request.Schemeui
3.獲取域名+版本號 :Request.Hostthis
4.獲取請求路徑,不含有參數 和錨點:Request.Path ,基礎路徑Request.BasePathurl
5.獲取請求參數部分 ,不含有錨點 :Request.QueryStringspa
6.獲取請求頭信息:Request.Headerscode
3、其餘需求整理
1.獲取請求參數錨點,目前沒 找到 可用 方法
2.獲取完整的請求地址,能夠 經過擴展方法自定義處理
public static class HttpRequestExtensions { public static string GetAbsoluteUri(this HttpRequest request) { return new StringBuilder() .Append(request.Scheme) .Append("://") .Append(request.Host) .Append(request.PathBase) .Append(request.Path) .Append(request.QueryString) .ToString(); } }
3.獲取 請求頭信息展現示例:
<pre> 獲取請求頭: @{ string json=Newtonsoft.Json.JsonConvert.SerializeObject(this.Context.Request.Headers, Newtonsoft.Json.Formatting.Indented); this.WriteLiteral(json); } </pre>
四 、獲取客戶端IP地址
在ASP.NET中,使用負載均衡時,能夠經過ServerVariables獲取客戶端的IP地址。
var ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
但在ASP.NET Core中沒有ServerVariables的對應實現,須要換一種方式,能夠在HttpContext.Request.Headers中獲取,須要注意的是key與ServerVariables方式不同,ServerVariables中是"HTTP_X_FORWARDED_FOR",HttpContext.Request.Headers中是"X-Forwarded-For",示例代碼以下:
var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
完整的擴展方法實現以下:
public static class HttpContextExtension { public static string GetUserIp(this HttpContext context) { var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); if (string.IsNullOrEmpty(ip)) { ip = context.Connection.RemoteIpAddress.ToString(); } return ip; } }
更多: