Asp.Net Core獲取請求信息/獲取請求地址


Asp.Net Core獲取請求信息/獲取請求地址

 

 一、Asp.Net Core 2.0版本中目前HttpRequest是個抽象類

在控制器或視圖上下文中獲取到的 Request對象,是 DefaultHttpRequest的實例。

定義 如圖 :

二、常用屬性說明:

1.獲取請求 協議:Request.Protocol,目前多數是http1.0

2.獲取url的Scheme:Request.Scheme

3.獲取域名+版本號 :Request.Host

4.獲取請求路徑,不含有參數 和錨點:Request.Path  ,基礎路徑Request.BasePath

5.獲取請求參數部分 ,不含有錨點 :Request.QueryString

6.獲取請求頭信息:Request.Headers

三、其他需求整理

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;
    }
}
復制代碼

 

 

更多:

Asp.Net Core 靜態文件目錄操作

Asp.Net Core Web相對路徑、絕對路徑整理

Asp.Net Core 文件上傳處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM