2009-03-05 5 views
0

Crystal Reports를 사용하여 Excel 스프레드 시트를 추출하는 ASP.NET 1.1 응용 프로그램이 있습니다. 코드는 IIS6에서 작동하지만 IIS7로 마이그레이션하려고하면 Excel 파일 대신 내용이없는 html이 나옵니다.IIS7 Response.WriteBuffer가 작동하지 않습니다.

MIME 유형이 존재합니다. 아래는 우리가 사용하는 코드입니다. 3.5 프레임 워크에서 주로이 코드를 작성하지 않았습니다. 내 가정은 IIS7에서 IIS8에서 작동하기 때문에 코드가 아니라 IIS7 구성에서 누락되었습니다. 나머지 ASP.NET 1.1 응용 프로그램은 IIS7에서 작동합니다.

 Dim cr As ReportClass 
     'EXPORT the report based on the export type passed in. 
     Dim ExpOptions As New ExportOptions 
     Dim ContentType As String 
     Dim strExt As String 
     Trace.Write("DisplayReport reportname=" + ReportName + " SQL=" + SQL + " SQLSub1=" + Convert.ToString(Session("SQLSub1"))) 
     'Get the report filled with the data. 
     If Session("SQLSub1") <> "" Then 
      If Not Session("SubRptName") Is Nothing Then 
       cr = PopulateReport(GetReportObject(ReportName), SQL, Session("SQLSub1"), Session("SubRptName")) 
       Session("SQLSub1") = "" 
       Session("SubRptName") = Nothing 
      Else 
       cr = PopulateReport(GetReportObject(ReportName), SQL, Session("SQLSub1")) 
       Session("SQLSub1") = "" 
      End If 
     Else 
      cr = PopulateReport(GetReportObject(ReportName), SQL) 
     End If 

     If DisplayType = ReportType.Excel Then 
      If ReportName.ToUpper = "ACTION" Or ReportName.ToUpper = "INVENTORY_EXCEL" _ 
       Or ReportName.ToUpper = "UNDERPERFORM" Or ReportName.ToUpper = "EMPLOYEE_EXCEL" Then 
       Dim excelFormatOpts As New ExcelFormatOptions 
       ' Set the excel format options. 
       excelFormatOpts.ExcelTabHasColumnHeadings = True 
       excelFormatOpts.ExcelUseConstantColumnWidth = False 
       ExpOptions.FormatOptions = excelFormatOpts 
      Else 
       ExpOptions.FormatOptions = New ExcelFormatOptions 
      End If 
      ExpOptions.ExportFormatType = ExportFormatType.Excel 
      ContentType = "application/vnd.ms-excel" 
      strExt = ".xls" 
     ElseIf DisplayType = ReportType.PDF Then 
      ExpOptions.ExportFormatType = ExportFormatType.PortableDocFormat 
      ExpOptions.FormatOptions = New PdfRtfWordFormatOptions 
      ContentType = "application/pdf" 
      strExt = ".pdf" 
     End If 

     'Stream the report to the screen 
     Dim req As New ExportRequestContext 
     req.ExportInfo = ExpOptions 

     Dim s As Stream 
     Try 
      s = cr.FormatEngine.ExportToStream(req) 
     Catch ex As Exception 
      Trace.Warn("DisplayReport cr.FormatEngine.ExportToStream(req) failed: " + ex.Message) 
      Dim x As String = String.Empty 
     End Try 


     Response.Clear() 
     'Response.ClearHeaders() 
     'Response.ClearContent() 
     Response.Buffer = True 
     Response.ContentType = ContentType 
     Response.AddHeader("Content-Type", ContentType) 


     Dim buffer(s.Length) As Byte 
     s.Read(buffer, 0, Int(s.Length)) 
     Response.BinaryWrite(buffer) 

     Dim strContentDisposition As String = "inline;filename=" & ReportName.ToString.ToLower & strExt.ToString 
     Trace.Write("DisplayReport strContentDisposition=" + strContentDisposition) 
     Response.AddHeader("Content-Disposition", strContentDisposition) 
     Response.Cache.SetMaxAge(New TimeSpan(0, 0, 10)) 
     Response.End() 

답변

0

이 내가 지금까지 무엇을 가지고 여기에 직장에서 몇 가지 DEVS를 묻는 :.

는 "전에, 내가 전에도 결정에서 옵션을 스트리밍 수출을 사용한 적이 것을 본 적이 그러나, 추측해야 할 것은 서버 권한을 가능한 오류로 간주하고 사용자가 스트림에 액세스 할 수있는 특별한 권한이 있어야하는 상황을 보았습니다. "

관련 문제