获取调用接口的客户端ip地址

  • Post author:
  • Post category:其他


获取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

}





版权声明:本文为qq165285727原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。