2011-10-28 36 views
4

我有一個C#頁面生成PDF文件並將其返回給用戶。我明確地將Content-Type頭設置爲「application/pdf」,並且MIME類型在IIS中註冊,但IIS好像剝離了Content-Type。IIS 7似乎正在刪除顯式設置的內容類型。我怎樣才能阻止呢?

該文件正在返回正確,如果我選擇將其保存到磁盤,我可以打開它就好了。如果我從ASP.NET開發服務器運行該頁面,Content-Type頭文件就會很好。

代碼...

byte[] pdf = //magic! 
string filename = "Some.pdf"; 

Response.Clear(); 
Response.ClearHeaders(); 
//This way didn't work either... 
//Response.ContentType = "application/pdf"; 
Response.AddHeader("Content-Type", "application/pdf"); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + ";size=" + pdf.Length.ToString()); 
Response.Flush(); 
Response.BinaryWrite(pdf); 
Response.Flush(); 
Response.End(); 
+0

你通過AJAX通過一個UpdatePanel這樣做或什麼 –

+0

@JamesJohnson - ?不,這只是一個腳本,沒有上下文運行 – MyItchyChin

回答

1

我有非常類似的東西目前正在運行的(它可以讓用戶下載自己後面的代碼生成的TXT文件)。

與您基本相同的代碼,但我沒有Response.Flush()任何地方。您可以嘗試對兩個.Flush進行評論,看看會發生什麼。

編輯這是我的代碼(成功地讓用戶下載的TXT文件

string filename = "myfile.txt"; //made up filename 
Response.AddHeader("Content-disposition", "attachment; filename=" + filename); 
Response.ContentType = "application/octet-stream"; 

byte[] data = new byte[Encoding.UTF8.GetByteCount(_r)]; //_r is a string containing my txt 
data = Encoding.UTF8.GetBytes(_r); 
Response.ContentEncoding = Encoding.UTF8; // handling special chars 
Response.BinaryWrite(data); 
Response.End(); 
+0

刪除.Flush調用工作,謝謝。 – MyItchyChin

相關問題