/// <summary> /// 현재 페이지 경로 앞에 Full URL을 덧붙인 값을 리턴함. /// 예를 들어 현재 페이지 경로가 "/test.aspx"이면, "http://www.myurl.com/test.aspx"로 변경함. /// </summary> public static string PrefixHttpToCurrentUrl() { HttpRequest Req = HttpContext.Current.Request; string Url = "http://" + Req.ServerVariables["HTTP_HOST"] + Req.ServerVariables["PATH_INFO"]; string Param = Req.ServerVariables["QUERY_STRING"]; string UrlParam = CQueryString.AppendQueryString(Url, Param); return(UrlParam); }
/// <summary> /// 한쪽에서 저장된 쿠키 정보를 다른쪽에서 읽는 작업을 실제로 함. /// </summary> private static void MergeCookie(HttpCookieCollection CookToOverwrite) { HttpCookieCollection CookiesCur = HttpContext.Current.Request.Cookies; HttpCookieCollection CookiesWrite = HttpContext.Current.Response.Cookies; bool IsChanged = false; //현재 쿠키와 이전 쿠키에 일치하는 이름이 있다면 이전 쿠키 값을 덮어씀. for (int i = 0, i2 = CookiesCur.Count; i < i2; i++) { string Key = CookiesCur.GetKey(i); string Value = CookiesCur[i].Value; if (CookToOverwrite[Key] == null) { continue; } if (Value != CookToOverwrite[Key].Value) { CookiesWrite[Key].Value = CookToOverwrite[Key].Value; IsChanged = true; } } //이전 쿠키에서 추가된 값이 있다면 현재 쿠키에 추가함. for (int i = 0, i2 = CookToOverwrite.Count; i < i2; i++) { string Key = CookToOverwrite.GetKey(i); string Value = CookToOverwrite[i].Value; if (CookiesCur[Key] == null) { CookiesWrite.Add(new HttpCookie(Key, Value)); IsChanged = true; } } if (IsChanged) { //클라이언트로 가기 전까지는 변경된 쿠키를 읽을 수 없으므로 //현재 페이지를 다시 호출함. HttpRequest Req = HttpContext.Current.Request; HttpResponse Resp = HttpContext.Current.Response; string UrlParam = CQueryString.AppendQueryString(Req.ServerVariables["PATH_INFO"], Req.ServerVariables["QUERY_STRING"]); Resp.Redirect(UrlParam, true); } }
public static string AppendQueryString(Uri uri, string QueryString) { return(CQueryString.AppendQueryString(uri.AbsoluteUri, QueryString)); }