天天看點

WebAPI 獲得遠端IP 擴充類

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net.Http;

namespace Legal.Api.Controller

{

    public static class HttpRequestMessageExtensions

    {

        private const string HttpContext = "MS_HttpContext";

        private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";

        public static string GetClientIpAddress(this HttpRequestMessage request)

        {

            if (request.Properties.ContainsKey(HttpContext))

            {

                dynamic ctx = request.Properties[HttpContext];

                if (ctx != null)

                {

                    return ctx.Request.UserHostAddress;

                }

            }

            if (request.Properties.ContainsKey(RemoteEndpointMessage))

            {

                dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];

                if (remoteEndpoint != null)

                {

                    return remoteEndpoint.Address;

                }

            }

            return null;

        }

    }

}

繼續閱讀