2013-03-25 63 views
1

我在IE 10中遇到了一個問題(我認爲是)ASP.NET/VB Web Forms應用程序中的Response.WriteFile方法(它以.NET 2.0爲目標)在生產服務器上。基本上,這段代碼已經到位,並且在IE 10之前一直工作很多年。現在,當我通過Visual Studio在本地測試它時,它工作正常,但是當它位於生產服務器(Server 2008 R2,IIS 7)上時,我收到文件無法下載的錯誤。當我強制它,我得到一個腐敗的PDF。我正在使用Crystal Reports X生成PDF。任何願意以正確的語言幫助我研究這個問題的人將會得到我不朽的感激之情!我已經嘗試了各種IE 10的所有compat模式。我已經通過Scott Hanselman http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx更新了App_Browsers文件夾中的瀏覽器定義文件。作爲一個相對新手的開發人員,我不確定我錯過了如何通過VS在IE 10上工作,但在我投入生產時不起作用。Response.WriteFile生產服務器上的IE 10不工作

這裏是有問題的代碼片段:

... 
    Response.ContentType = "application/pdf" 
    Response.AddHeader("content-disposition", "attachment; filename=ThisReport_" & Server.UrlEncode(Me.ReportName.Text & "_" & Now.Month.ToString() & "_" & Now.Day.ToString() & "_" & Now.Year.ToString()) & ".pdf") 

    Response.WriteFile(strFileName) 
    ... 

預先感謝您的任何幫助,指導,或者您也可以在解決這一問題提供了方向。我把它撒在我的應用程序的許多地方,所以找到一個根級別的修補程序比修復它出現的每個地方更好。不幸的是,升級到.NET 4.5並不是一種選擇。

回答

4

我正在回答我自己的問題,以防可能以後再來的其他人可以從中受益。事實證明,據我所知,IE 10中的一個變化影響了ASP.NET 2.0中的響應對象(或其他版本,我不確定)。我能夠加入到解決我的問題...

Response.ClearContent() 
    Response.ClearHeaders() 
    Response.Clear() 
    Response.Buffer = True 
    Response.ContentType = "application/pdf" 
    Response.AddHeader("content-disposition", "attachment; filename=ThisReport_" & Server.UrlEncode(Me.ReportName.Text & "_" & Now.Month.ToString() & "_" & Now.Day.ToString() & "_" & Now.Year.ToString()) & ".pdf") 
    Response.WriteFile(strFileName)   
    Response.End() 

我嘗試使用

Response.Flush() 
    Response.Close() 

當我這樣做,我得到的HTML頁面被吐出,而不是PDF內容出來。這爲我解決了這個問題,儘管還有很多關於ASP.NET和IIS的內部工作方面的知識,我還沒有學習。如有必要,請隨時添加。

+0

我也有一個問題,如果Response.Buffer設置爲False,IE 10不會正確顯示傳統的ASP頁面。如果頁面只是比較複雜,並且需要花費一兩秒鐘才能編譯,IE10會隨機地忽略某些表中的文本。 – EddieB 2013-07-24 18:51:16

0

更換Response.Flush() 和Response.Close()與HttpContext.Current.ApplicationInstance.CompleteRequest()

0

我有同樣的問題,即我的本地機器上工作,但沒有工作PROD服務器上認爲我的本地機器可能從微軟獲得更新,而PROD服務器尚未更新。我們正在測試的應用在IE兼容模式下表現很好,但在IE 10中獲得各種奇怪的東西。

I要求使用微軟2年前發佈的hot fix來更新prod服務器。但我的服務器上有2.0框架,所以我要求他們轉到框架3.5並應用此修復程序。現在,該應用的功能很好,我可以在不改變瀏覽器模式的情況下使用IE 10兼容模式。

這裏是鏈接修復

http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2600088&kbln=en-us

0

我面臨同樣的問題。我正在使用Response.Close(),我用「Response.End()」代替它,它只是做了這項工作。

相關問題