2009-03-05 12 views
0

Bir excel elektronik tablosu tükürmek için Crystal Reports kullanan bir ASP.NET 1.1 uygulamasına sahibiz. Kodlar IIS6 altında çalışır, ancak IIS7'ye taşımaya çalıştığımızda, Excel dosyası yerine hiçbir içerik olmadan html tükürür.IIS7 Response.WriteBuffer çalışmıyor

MIME Türü var. Aşağıda kullandığımız kod. Bu kodu öncelikle 3.5 çerçevede çalıştığım gibi yazmadım. Benim varsayım, IIS6 üzerinde çalıştığından beri IIS7 yapılandırmasında kod bir şey eksik. ASP.NET 1.1 uygulamasının geri kalanı IIS7'de çalışır.

 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() 

cevap

0

, bu şimdiye kadar ne var burada iş yerinde bazı devs Sorular:.

"önce ben bile önce kristal seçeneği akışı için ihracat hiç kullanmadıysanız olduğunu görmedim Ancak, eğer Tahmin etmeliydim, sunucu izinlerine olası bir hata olarak baktım. Kullanıcının akarsulara erişmek için özel ayrıcalıklara sahip olması gereken durumlar gördüm. "