HttpContext的辅助类

HttpContext是MVC.NET 和 .NET Core的基础,可以编写其辅助类如下

public static class HttpContextHelper
    {
        private const string UserName = "UserName";

        public static string GetFormString(this HttpContext httpContext)
        {
            var request = httpContext.Request;

            if (!request.HasFormContentType)
            {
                return string.Empty;
            }

            var result = new StringBuilder();

            var items = request.Form.ToList();
            foreach (var (key, value) in items)
            {
                if (string.Compare(key, "__RequestVerificationToken", StringComparison.Ordinal) == 0)
                {
                    continue;
                }

                result.Append(key);
                result.Append(":");
                var first = true;

                foreach (var sub in value)
                {
                    if (!first)
                    {
                        result.Append(",");
                    }

                    result.Append(sub);
                    first = false;
                }

                result.Append(";");
            }

            return result.ToString();
        }

        public static string GetQueryString(this HttpContext httpContext)
        {
            return httpContext.Request.QueryString.ToString();
        }

        public static string GetPath(this HttpContext httpContext)
        {
            return httpContext.Request.Path.ToString();
        }

        public static string GetUserName(this HttpContext httpContext)
        {
            var result = string.Empty;

            var claim = httpContext.User.Identities
                .FirstOrDefault(c => c.Claims.FirstOrDefault(d => d.Type == UserName) != null);
            if (claim != null)
            {
                result = claim.FindFirst(d => d.Type == UserName).Value;
            }

            return result;
        }

        public static string GetIp(this HttpContext httpContext)
        {
            return httpContext.Connection.RemoteIpAddress.ToString();
        }     
    }

你可能感兴趣的:(C#开发)