.net Linq CopyToDataTable 및 클라이언트 IP 추출

.net의 두가지를 알아보겠습니다.
하나는 Linq를 이용하여 DataTable에서 해당하는 DataRow를 뽑아 뽑혀진 Row를 DataTable에 복사하는 방법이구요.
다른 하나는 해당 사이트에 접근한 사용자 PC의 아이피(IP)를 추출하는 방법 입니다.


우선 첫번째 .net Linq CopyToDataTable 방법에 대해서 알아보겠습니다.
DataTable dt = db.SPExecuteDataSet("프로시저", oParams).Tables[0];
우선 프로시저를 이용하여 DB에서 DataSet을 뽑아 그 DataSet의 첫번째 DataTable을 뽑아서 dt라는 DataTable에 담습니다.




Linq를 아래와 같이 이용하여 원하는 DataRow를 뽑습니다.
IEnumerable<DataRow> query = dt.Select("Gubun_M='전체' OR Gubun_M='설계'");

그리고 마지막으로 원하는 DataRow를 다시 DataTable로 복사 합니다.
DataTable boundTable = query.CopyToDataTable<DataRow>();


다음으로 보안상의 이유 또는 로그를 남기기위해서 해당 사이트에 접근한 사용자의 PC 아이피(IP)를 추출해야만할 때가 있습니다. (클라이언트 IP 추출)
이럴땐 어떻게 해야 할까요?

아래와 같은 방법으로 손쉽게 추출 가능 합니다.

using System.Net;
using System.Net.Sockets;
/// <summary>
        /// 사용자IP 조회
        /// </summary>
        /// <returns></returns>
        public string GetRemoteIP()
        {
            // IPv6 형태를 IPv4 형태로
            string ip = string.Empty;
            try
            {
                foreach (IPAddress i in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
                {
                    if (i.AddressFamily == AddressFamily.InterNetwork)
                    {
                        ip = i.ToString();
                        break;
                    }
                }
                if (ip == string.Empty)
                {
                    foreach (IPAddress i in Dns.GetHostAddresses(Dns.GetHostName()))
                    {
                        if (i.AddressFamily == AddressFamily.InterNetwork)
                        {
                            ip = i.ToString();
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string msg = ex.InnerException.ToString();
            }
            return ip;
        }
        #endregion



bool isAuthOK = false;
            string ipAddr = GetRemoteIP();
            if (ipAddr.Contains("xx1.xx1") || ipAddr.Contains("xx2.xx2")
            {
                isAuthOK = true;
            }
           
            if (!isAuthOK)
            {
                // Response.Redirect(Request.UrlReferrer.ToString());
                this.Page.ClientScript.RegisterStartupScript(this.GetType(), "navigate", string.Format("window.parent.history.back(-1);"), true);
            }




이상으로 .net Linq CopyToDataTable 및 클라이언트 IP 추출을 마치겠습니다.

댓글

이 블로그의 인기 게시물

껌 떼는 법 (완벽 제거)

인성검사 팁 (인성검사 합격)

석청 효능 및 석청 부작용 알아보기