0

ABCPDF.netを使用してHTMLをPDFページにレンダリングしていますが、現在の認証済みセッションを使用してこれらを保護したいと思います。ただし、PDFをレンダリングするためのHTMLを取得する要求はセッションを引き継がず、新しいセッションを作成します。ASP.NETメンバーシップを使用しており、セッションIDをパスウィギンし、ASP.NET要求でCookieを作成しています。

    var sessionId = HttpUtility.ParseQueryString(Url)["sid"];

    if(sessionId != null)
    {
        doc.HtmlOptions.HttpAdditionalHeaders = string.Format("Cookie: 
                                    ASP.NET_SessionId={0}", sessionId);
    }

ABCPDF.netのドキュメントでこれを読み、それを実行していますが、リクエストは常に別のセッションを使用します。

httpadditionalheaders

私は何か他のものを渡す必要がありますか、それとも私は何か他のものをすることができますか?

4

1 に答える 1

1

URLで認証Cookieを送信し、Cookieを更新することで修正しました。

URLを呼び出す

Url.ActionAbsolute(MVC.Events.Pools(eventId).AddRouteValue(FormsAuthentication.FormsCookieName, Request.Cookies[FormsAuthentication.FormsCookieName].Value)

Global.asax

  protected void Application_BeginRequest()
        {
            try
            {
                string auth_cookie_name = FormsAuthentication.FormsCookieName;

                if (HttpContext.Current.Request.Form[FormsAuthentication.FormsCookieName] != null)
                {
                    UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[FormsAuthentication.FormsCookieName]);
                }
                else if (HttpContext.Current.Request.QueryString[FormsAuthentication.FormsCookieName] != null)
                {
                    UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[FormsAuthentication.FormsCookieName]);
                }

            }
            catch
            {
            }
        }

        void UpdateCookie(string cookieName, string cookieValue)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookieName);
            if (cookie == null)
            {
                cookie = new HttpCookie(cookieName);
                HttpContext.Current.Request.Cookies.Add(cookie);
            }
            cookie.Value = cookieValue;
            HttpContext.Current.Request.Cookies.Set(cookie);

    }
于 2012-10-05T19:26:58.897 に答える