获取ip地址的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web;
namespace WebApplication3.Controllers
{
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 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;
}
}
//((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
return null;
}
}
}
使用方法:
public class ValuesController : ApiController
{
private Message message = new Message();
[AcceptVerbs("Get", "Post")]
public HttpResponseMessage PhoneCode_Validate()
{
string s = HttpRequestMessageExtensions.GetClientIpAddress(this.Request);//调用获取ip
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StringContent(GetToJson.ToJson(1, "客户端访问地址",s), Encoding.GetEncoding("UTF-8"), "application/json");
return result;
}
}
public class Message
{
public Message() { }
#region Message
public string msg { get; set; }
public bool status { get; set; }
#endregion Message
}