2

在我的网站中,我使用ABCpdf从 HTML 动态生成 pdf。我有两个条件:

  1. 用户已登录,显示第一页并将第一页绘制为 pdf
  2. 用户未登录显示的第二页并将第二页绘制为 pdf

我的代码是这样的:

 string url = HttpContext.Current.Request.Url.AbsoluteUri;
        Doc theDoc = new Doc();
        theDoc.AddImageUrl(url);
        theDoc.Save(HttpContext.Current.Server.MapPath("~/media/pdf/1212.pdf"));
        theDoc.Clear();

现在问题是这样的,当用户登录时,我可以看到第一页,但是当绘制 PDF 时,它包含未登录的页面(第二页)。

我正在使用 inproc 会话模式来存储我的登录详细信息。据我了解,即使用户已登录,当此代码执行时,服务器会返回未登录页面,获取 HTML 以呈现 PDF 的请求不会延续会话,而是创建一个新的会话。

任何人都可以给我任何线索吗?

4

1 回答 1

1

原因可能是 ABCPdf 在呈现 HTML 时的工作方式是不是用户访问要呈现的页面,而是服务器和服务器不会有用户登录会话,它会访问页面,就像你刚刚键入一样服务器上浏览器中的 URL。因此,当您通过 ABCpdf 访问该页面时,它就像用户未登录一样。

我过去克服此问题的方法是将加密的查询字符串 pram 传递到页面并在 PDF 呈现页面上检查这一点,并根据该 pram 值更改显示的结果。

于 2013-01-09T11:29:16.280 回答