123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ProjectManagementSystem.WebApi.Extensions
- {
- public static class HttpRequestMessageExtensions
- {
- private const string HttpContext = "MS_HttpContext";
- private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";
- private const string OwinContext = "MS_OwinContext";
- public static string GetClientIpAddress(this System.Net.Http.HttpRequestMessage request)
- {
- // Web-hosting. Needs reference to System.Web.dll
- if (request.Properties.ContainsKey(HttpContext))
- {
- dynamic ctx = request.Properties[HttpContext];
- if (ctx != null)
- {
- return ctx.Request.UserHostAddress;
- }
- }
- // Self-hosting. Needs reference to System.ServiceModel.dll.
- if (request.Properties.ContainsKey(RemoteEndpointMessage))
- {
- dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
- if (remoteEndpoint != null)
- {
- return remoteEndpoint.Address;
- }
- }
- // Self-hosting using Owin. Needs reference to Microsoft.Owin.dll.
- if (request.Properties.ContainsKey(OwinContext))
- {
- dynamic owinContext = request.Properties[OwinContext];
- if (owinContext != null)
- {
- return owinContext.Request.RemoteIpAddress;
- }
- }
- return null;
- }
- }
- }
|