为什么请求不适用于我的PDF请求?

时间:2010-06-11 16:50:09

标签: c# asp.net httprequest

我们正在尝试创建一个.NET aspx页面,其中包含PDF。通过硬编码来实现这一点很容易。

<object height="1250px" width="100%" type="application/pdf" data="our.pdf">
    <param value="our.pdf" name="src" />
    <param value="transparent" name="wmode" />
</object>

(不要过于担心透明的事情......我们出于其他原因这样做......但我把它包含在这里“以防万一”。)

问题是我们想要动态生成PDF。我们在前端填充文字的代码如下所示:

ltrPDF.Text = String.Format("<object height=\"1250px\" width=\"100%\" type=\"application/pdf\" data=\"ourPdfGenerator.aspx?var0={0}&var1={1}&var2={2}\">", var0, var1, var2);
ltrPDF.Text += String.Format("<param value=\"ourPdfGenerator.aspx?var0={0}&var1={1}&var2={2}\">", var0, var1, var2);
ltrPDF.Text += "<param value=\"transparent\" name=\"wmode\"/>";
ltrPDF.Text += "</object>";

有点难看,但似乎应该有效。但事实并非如此。

当我调试并在thePdfGenerator.aspx.cs Page_Load方法的第一行放置一个断点时,我毫不费力地到达断点。但是,我们要做的第一件事就是尝试使用Request.QueryString:

string var0 = Request.QueryString["var0"];

会立即抛出HttpException:“请求在此上下文中不可用。”我不清楚:

  • 为什么不可用?
  • 我该怎么办?
编辑:(顺便说一句,我知道从aspx页面请求一个mime类型的pdf似乎有点奇怪......但我们之前使用了一个aspx页面来生成cs页面...我们做这样的事情:

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=\"our.pdf\"");
using (MemoryStream pdfStream = new MemoryStream())
{
    ourSpecialPdfGenerator.ExportToPdf(pdfStream);
    Response.BinaryWrite(pdfStream.ToArray());
}
Response.End();

这种情况在其他环境中已经有效了一段时间......但总是作为自己的页面。我们现在做的不同之处在于不是直接调用此页面,而是尝试嵌入它,因此它是从<object>标记调用的,这显然会导致问题......

1 个答案:

答案 0 :(得分:1)

错误在ourPdfGenerator.aspx.cs。您的object代码很好。您可以将代码发布到ourPdfGenerator.aspx.cs吗?