2010-06-11 147 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

相關問題