예제 #1
0
        /// <summary>
        /// 如果接收到页面访问票据的请求,则生成访问票据
        /// </summary>
        private static void ProcessAccquireAccessTicket()
        {
            HttpRequest request = HttpContext.Current.Request;

            AccessTicket aTicket = new AccessTicket();

            aTicket.GenerateTime = DateTime.Now;

            Uri targetUri = new Uri(request.QueryString[AccessTicket.AccquireAccessTicketParamName], UriKind.RelativeOrAbsolute);

            aTicket.DestinationUrl = targetUri.ToString();

            if (request.QueryString[AccessTicket.AutoMakeAbsoluteParamName] != null && request.QueryString[AccessTicket.AutoMakeAbsoluteParamName].ToLower() == "true")
            {
                aTicket.MakeDestinationUrlAbsolute(request.Url);
            }

            StringBuilder strB = new StringBuilder();

            strB.AppendLine("<script type=\"text/javascript\">");
            strB.AppendFormat("var anchor = parent.document.getElementById(\"{0}\");\n", request.QueryString["_anchorID"]);
            strB.AppendFormat("anchor.href = \"{0}\";\n",
                              aTicket.AppendToUrl(targetUri.ToString()));

            strB.AppendLine("var eventSink = anchor.getAttribute(\"OnClientAccquiredAccessTicket\");");
            strB.AppendLine("if (eventSink && eventSink != \"\")");
            strB.AppendLine("\teval(\"parent.\" + eventSink + \"(anchor)\");");
            strB.AppendLine("</script>");

            HttpResponse response = HttpContext.Current.Response;

            try
            {
                response.Cache.SetCacheability(HttpCacheability.NoCache);
                response.Write(strB.ToString());
            }
            catch (System.Exception ex)
            {
                ex.WriteToEventLog("webApplicationError");

                response.Write(ex.ToString());
            }
            finally
            {
                response.End();
            }
        }