asp.net - 为什么在 asp.net 上读取大型 excel 文件时应用程序池正在回收
问题描述
我有一个 asp.net 网络应用程序。我正在阅读和处理上面的excel文件。
下面的代码显示了我如何读取 excel 文件。
string strComand;
if (strSheetName.IndexOf("|", StringComparison.Ordinal) > 0)
{
_sheetName = strSheetName.Substring(0, strSheetName.IndexOf("|", StringComparison.Ordinal));
_range = strSheetName.Substring(strSheetName.IndexOf("|", StringComparison.Ordinal) + 1);
strComand = "select * from [" + _sheetName + "$" + _range + "]";
}
else
{
strComand = "select * from [" + strSheetName + "]";
}
_daAdapter = new OleDbDataAdapter(strComand, _cn);
DataTable dt = new DataTable(strSheetName);
_daAdapter.FillSchema(dt, SchemaType.Source);
GC.Collect();
GC.WaitForPendingFinalizers();
_daAdapter.Fill(dt); // there is a problem on this line
_cn.Close();
retInfo.Data = dt;
return retInfo;
如果我读的是小尺寸的excel,那么就没有问题了。但是当我尝试读取大型 excel 文件时,我的应用程序池正在回收。
我应该怎么办。
解决方案
这会导致应用程序池配置为在超出内存限制时进行回收。
解决此问题 通过选择适当的应用程序池来更改 IIS 中的应用程序池回收设置。
打开 IIs 管理器控制台。在 Connections 窗格中,展开树视图,然后单击 Application Pools。
在“应用程序池”列表中,右键单击要禁用内存限制的应用程序池,然后单击“回收”。
在“编辑应用程序池回收设置”对话框的“基于内存的最大值”部分中,清除“虚拟内存使用量(以 KB 为单位)和专用内存使用量(以 KB 为单位)”复选框,然后单击“下一步”。
在“将事件回收到日志”对话框中,单击“完成”。
问候,贾尔帕。
推荐阅读
- javascript - React - 使用 Internet Explorer 在侧面显示白屏
- symfony - 在 Amazon AWS 上获取一个简单的 Symfony 5 应用程序作为 Amazon Cognito 的 API 网关/Lambda
- python-3.x - 使用 Python 元素树根据属性值删除 XML 元素
- gitlab-ci - 用于 Svelte SSR(Sapper)上 Cypress 测试的 Gitlab ci 配置
- ruby-on-rails - 发送 json_response 时不能 .include 与 ActiveRecord 数据的关系
- angular - 手动注入路由器后的单元测试注入器(APP_INITIALIZER)
- deployment - GitLab Pages 部署失败:Create-React-App w/Router
- javascript - 改变画布中笔画的颜色
- android - Chrome如何在Android上下载没有存储权限的文件?
- arrays - 调试子例程仅在 perl 中打印散列数组中的第一个条目