• Microsoft Report Viewer Redistributable 2010


    When you run ReportViewer.exe, the following files are installed in the Global Assembly Cache folder on the deployment computer.

    • Microsoft.ReportViewer.Common.dll

    • Microsoft.ReportViewer.ProcessingObjectModel.dll

    • Microsoft.ReportViewer.WebForms.dll

    • Microsoft.ReportViewer.WinForms.dll

    • Microsoft.ReportViewer.DataVisualization.dll

    -------------

    We develop software on MS Visual Studio 8 and we are facing serious problems with MS Report Viewer's memory leaks (WinForms Application).

    -------------

    Posted by Microsoft on 2/2/2010 at 3:43 PM

    Thank you for your feedback.
    The issue that you have reported has been fixed in Visual Studio 2010.

    -------------

    Posted by Sautin on 2/10/2010 at 10:27 AM

    No the issue has not been fixed in VS2010, I just downloaded it and redeveloped my class library that generates PDF reports using Microsoft ReportViewer Control version 10. Every time that I call LocalReport.RefreshReport() Method, my memory jumps significantly(expected for generation of the report) but even after disposing of the reportviewer and cleaning it out, my memory footprint never returns to what it was. This is becoming really disappointing and may cause us to use someone elses technology to render reports for our clients.

    -------------

    Posted by Cyberlogic on 2/17/2010 at 8:13 AM

    Hi there, we just tried the Report Viewer files from VS2010 RC1 Ultimate edition (By referencing Microsoft.ReportViewer.WinForms.dll & Microsoft.ReportViewer.Common.dll in our projects) in VS2008 and the Report Viewer seems to work FINE now!
    We noticed that there is no delays from memory leaks and that the application works normally.
    We got some help from another post in MS Connect: https://connect.microsoft.com/VisualStudio/feedback/details/510243/report-viewer-has-memory-leak-in-local-report-mode

    -------------

    If Session.Count > 0 Then
        For i As Integer = 0 To Session.Count - 1
            If i < Session.Count AndAlso Not Session(i) Is Nothing AndAlso Session(i).GetType().ToString() = "Microsoft.Reporting.WebForms.ReportHierarchy" Then
                Session.RemoveAt(i)
            End If
        Next
    End If

    -------------

    Visual Studio 2010

    The ReportViewer in VS 2010 is a multi-targeted assembly.  That means that is can be loaded into a .Net 3.5 or a .Net 4.0 application.  When running under .Net 3.5, all of the same rules and methods noted above are applicable.  However, the CLR security team made changes to code access security in .Net 4.0, so there are corresponding changes in the ReportViewer as well:

    • Executing in the current AppDomain is no longer supported, so using a sandbox is the default mode when running in .Net 4.0.  Two new methods have been added to better control the permissions of the sandbox AppDomain so that you don’t see any loss of functionality:  AddFullTrustModuleInSandboxAppDomain and SetBasePermissionsForSandboxAppdomain.
    • ExecuteReportInCurrentAppDomain, AddTrustedCodeModuleInCurrentAppDomain, and ExecuteReportInSandboxAppDomain have been marked as obsolete.  While it is perfectly acceptable to use them in a .Net 3.5 application, they won’t have any effect when you compile for .Net 4.0.  Going forward, we recommend using the sandbox AppDomain even under .Net 3.5 because setting the correct security policy on the current AppDomain is an error prone task.  The new methods will work under both frameworks and is the best approach if you want to write in a framework agnostic way.

    If you do nothing, the default behavior under .Net 4.0 will result in the same permissions for the expression host as the default behavior in VS 2008.  You will be running in a sandbox AppDomain (versus the default of the current AppDomain in VS 2008), but the permissions for the expression host will be the same.

    As part of the security changes to the CLR in .Net 4.0, an application configuration flag, NetFx40_LegacySecurityPolicy, can be specified to use the .Net 3.5 security model in .Net 4.0.  If this flag is specified, the report viewer will behave just as it would under .Net 3.5, meaning that the obsolete methods will function correctly.

    Regardless of which framework version you use with the VS 2010 report viewer, the issue surrounding the sandbox AppDomain leak has been fixed.  The sandbox AppDomain is shared resource across multiple instances of the viewer.  A new AppDomain is created periodically (if there is a need) and used by all local mode requests in the process.  Once all reports referencing the old AppDomain have completed, the old domain will unload.

    -------------

    报表难点

    1 RDLC 数据量大的时候,大量占用内存,超过800M。

    2 RDLC 占用的内存没有释放

    报表在ReportViewer中呈现的时候占用大量的内存?精简报表的设计?
    只生成PDF或Excel,不在ReportViewer中呈现?

    使用 ReportViewer 2010?

    consider asking for a nice new machine with >= 8 Gigabytes of RAM and a 64-bit operating system.

    使用报表服务器?--- 占用内存是否还是很大?
    使用水晶报表? --- 不可行(价格昂贵,重新设计,VS2010中无水晶报表)
    使用Access2007/2010的报表功能? ---- 不可行

    -------------

    http://blogs.msdn.com/brianhartman/archive/2010/02/18/expression-evaluation-in-local-mode.aspx

    http://connect.microsoft.com/VisualStudio/feedback/details/527451/ms-report-viewer-memory-leak-any-update-fix-winforms-application

    Deploying Reports and ReportViewer Controls

    http://msdn.microsoft.com/en-us/library/ms251723.aspx

    http://blogs.msdn.com/selvar/archive/2008/07/18/getting-system-outofmemoryexception-when-using-reportviewer-contol-in-local-mode.aspx

    http://stackoverflow.com/questions/2486118/report-viewer-out-of-memory-exception

  • 相关阅读:
    超级英雄Hero
    2019 CSP-J 游记(CQ LNBS考场 的退役之战)
    一文梳理Web存储,从cookie,WebStorage到IndexedDB
    一文梳理同源策略与跨域技术
    一文梳理JavaScript中的this
    一文梳理JavaScript 事件循环(Event Loop)
    简单梳理JavaScript垃圾回收机制
    一文梳理JS事件
    src与href
    深入理解CSS定位—浮动模型
  • 原文地址:https://www.cnblogs.com/emanlee/p/1736047.html
Copyright © 2020-2023  润新知