2010-06-11 153 views
0

我们正在尝试创建一个.NET aspx页面,其中包含一个PDF。通过硬编码来做到这一点很容易。为什么请求不适用于我的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>"; 

类,但它看起来像它应该工作。但事实并非如此。

当我调试,并投入了断点ourPdfGenerator.aspx.cs Page_Load方法的第一行,我到达断点没有任何困难。但是,我们做的第一件事就是尝试使用的Request.QueryString:

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

这立即引发HttpException:“请求无法在这种情况下”我不清楚:

  • 为什么不可用?
  • 我该怎么办?

编辑:(顺便说一句,我知道这似乎有点不可思议,要求一个MIME类型从一个aspx页面的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

的错误在ourPdfGenerator.aspx.cs。你的object标签没问题。你能将代码发布到ourPdfGenerator.aspx.cs吗?

+0

好的,我想你可能是对的......我可能做了一些愚蠢的事情......坚持下去。 – Beska 2010-06-11 17:01:52

+0

就是这样。我对太奇怪的理论太过担心,以检查显而易见的问题。我在页面的构造函数中使用了Request.QueryString,而不是Page_Load。 (doh!)我被那些古怪的东西分散了,以至于我不在寻找明显的东西。 – Beska 2010-06-11 17:04:46

相关问题