2013-03-25 61 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()”代替它,它只是做了这项工作。

相关问题