/// <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(); } }