gpt4 book ai didi

c# - Microsoft Report Viewer 2012 异常 "Not enough storage is available to process this command"

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:13 25 4
gpt4 key购买 nike

我有一个用 VS2012 开发的 WCF 客户端应用程序。我使用 MS Report Viewer 2012 (Microsoft.ReportViewer.WinForms 11.0.3366.16) 在我的应用程序中执行和显示报告。问题是当这个报告在任何 32 位环境中执行时我得到这个异常。有趣的是,它不会在不同的 32 位机器上同时发生。

  • 在某些机器上,它发生在数据显示在报告。关于跟踪 64 位和 32 位机器之间的内存使用情况我注意到在 64 位机器上内存使用率飙升到大约 1.3GB(应用程序的专用字节)。在 32 位上机器,它飙升到大约 650MB 的 RAM,然后给出异常(exception)。在 32 位机器上仍然有很多物理和发生这种情况时剩余的虚拟内存,这让我感到困惑。如果您也继续,该错误会不断弹出。

  • 在其他机器上,当您将报告导出到 Excel 时会发生这种情况报告无事后呈现。错误有点不同但在您关闭异常时间歇性地变化,并且其中一个错误是“存储空间不足”错误。

  • 当您从浏览器运行此报告时,无需问题。

  • 周五,当我测试该报告时,它在 2 32 位上完美运行机器没有问题,我以为问题解决了,但是星期一来了,错误又回来了。我问的人重新启动有机器确保没有不必要的东西加载到内存中,但没有运气。

我在互联网上发现了很多关于错误的问题,但没有一个解决方案证明有效。有没有人可以让我了解要寻找的内容,因为我不确定在哪里可以找到答案。

报告数据集有大约 300,000 行,这些行在报告中聚合到显示的大约 3,000 行。

如果需要更详细的信息,请询问。我需要解决这个问题。

编辑

这是我设置报告的一些代码。

void BaseReportingForm_Load(object sender, System.EventArgs e)
{

rptViewer.ServerReport.ReportPath = "/test/TestReport";
rptViewer.ServerReport.ReportServerUrl = new Uri("http://localhost:80/ReportServer");
rptViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new System.Net.NetworkCredential(
"Developer", "Password", "Domain");
rptViewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Remote;
rptViewer.ShowParameterPrompts = false;

this.RefreshReport();
//cant do this here as the parameters that are dynamically loaded will not be populated
LoadParameters(null);
}

void RefreshReport()
{
this.RefreshReport(null);
}

void RefreshReport(Microsoft.Reporting.WinForms.ReportParameterInfoCollection pParameters)
{
//run in seperate thread...
object[] argArr = new object[] { pParameters };
if (reportBackgroundWorker.IsBusy)
{
restartWorker = true;
reportBackgroundWorker.CancelAsync();
}
else
{
reportBackgroundWorker.RunWorkerAsync(argArr);
}
}

void LoadParameters(Microsoft.Reporting.WinForms.ReportParameterInfoCollection pParameters)
{
this.catchClick = false;
if (pParameters != null) //only load the parameter collection
{
Microsoft.Reporting.WinForms.ReportParameterInfoCollection rptParameters = rptViewer.ServerReport.GetParameters();
foreach (Microsoft.Reporting.WinForms.ReportParameterInfo rptParam in rptParameters)
{
if (rptParam.Prompt != "")
{
//Code removed. Just creating edits and combo's for parameters to be captured
}
}
}
else //reload whole group
{
//First delete the group if it exists

//Get parameters and add it to the group as items
string version = rptViewer.ServerReport.GetServerVersion();
Microsoft.Reporting.WinForms.ReportParameterInfoCollection rptParameters = rptViewer.ServerReport.GetParameters();

int paramPosition = 0;
foreach (Microsoft.Reporting.WinForms.ReportParameterInfo rptParam in rptParameters)
{
if (rptParam.Prompt != "")
{
//Code removed. Just creating edits and combo's for parameters to be captured
}
}
}
}

public void RunReport()
{
this.RefreshReport();
}

private void reportBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
rptViewer.Invoke(new MethodInvoker(delegate()
{
//Removed the code that populates the parameters from the created edits and combo's and put some hardcoded params in here

var vParameters = new List<Microsoft.Reporting.WinForms.ReportParameter>();
vParameters.Add(new Microsoft.Reporting.WinForms.ReportParameter("Param1", "Param1"));
rptViewer.ServerReport.SetParameters(vParameters);
rptViewer.RefreshReport();
}));
}

private void reportBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled && restartWorker)
{
restartWorker = false;
this.RefreshReport();
}

if (e.Error != null)
{
throw e.Error;
}
else
{

}
}

编辑 2

根据我的研究,我找到了这个链接: http://unixwiz.net/techtips/not-enough-codes.html系统似乎明确地用完了内存或句柄。最好的行动是追捕 MS 一下,并希望他们回到男人身边?

谢谢

最佳答案

一年后,我仍然没有收到正确的答案。我已经在 Report Viewer 上回滚到以前的版本(版本 9)并且它解决了问题,但我仍然不知道为什么版本 11 只能在 64 位系统上正常工作

关于c# - Microsoft Report Viewer 2012 异常 "Not enough storage is available to process this command",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com