1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化。。。
2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端IP则是处理页的IP。
3.获取客户端IP的代码
public string GetClientIP() { HttpContext current = HttpContext.Current; string userHostAddress = string.Empty; if (current != null) { if ((current.Session != null) && (current.Session["cnki_sys_user_remote_addr"] != null)) { userHostAddress = current.Session["cnki_sys_user_remote_addr"].ToString(); if (!string.IsNullOrEmpty(userHostAddress)) { return userHostAddress; } } userHostAddress = "127.0.0.1"; userHostAddress = current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(userHostAddress)) { userHostAddress = current.Request.ServerVariables["REMOTE_ADDR"]; if (string.IsNullOrEmpty(userHostAddress)) { userHostAddress = current.Request.UserHostAddress; } } else { string[] strArray = userHostAddress.Split(new char[] { ',' }); if ((strArray.Length > 1) && !string.IsNullOrEmpty(strArray[strArray.Length - 1])) { userHostAddress = strArray[strArray.Length - 1]; } } if (current.Session != null) { current.Session["cnki_sys_user_remote_addr"] = userHostAddress; } } return userHostAddress; }
4.向mvcapi中发出的Post和Get请求,以及返回信息的接收和处理代码。
public class ECPManage { public Result GetResultFromConfig(string config, params string[] para)//config是mvcapi的处理路径,para是参数。 { string getUidUrl = string.Format(ConfigurationManager.AppSettings[config], para); string retJSON = SendGet(getUidUrl).TrimStart("?(".ToCharArray()).TrimEnd(')'); using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(retJSON))) { System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Result)); Result t = (Result)serializer.ReadObject(ms); return t; } } /// <summary> /// 发送post请求,返回信息 /// </summary> /// <param name="uri"></param> /// <param name="data"></param> /// <param name="encoding"></param> /// <returns></returns> public string SendPost(string uri, string data, string encoding = "utf8") { using (WebClient wCient = new WebClient()) { if ("utf8" == encoding) { wCient.Encoding = Encoding.UTF8; } else { wCient.Encoding = Encoding.Default; } return wCient.UploadString(uri, data); } } /// <summary> /// 发送get请求,返回信息 /// </summary> /// <param name="uri"></param> /// <param name="encoding"></param> /// <returns></returns> public string SendGet(string uri, string encoding = "utf8") { using (WebClient wCient = new WebClient()) { if ("utf8" == encoding) { wCient.Encoding = Encoding.UTF8; } else { wCient.Encoding = Encoding.Default; } return wCient.DownloadString(uri); } } }