【发布时间】:2014-04-17 10:02:12
【问题描述】:
我已经实现了一个使用 asp.net MVC 将 excel 文件转换为 .csv 文件的 Web 应用程序。
小文件一切正常。
但是当我尝试运行更大的文件时,我在客户端“ERR_CONNECTION_RESET”收到错误。
我已经做了研发并找到了解决方案,即
即使之后我也遇到了同样的问题。然后我通过引用这个Set Timeout For Controller Action 实现了线程。
现在我得到了“线程正在中止”的异常。
在这里我添加了我的堆栈跟踪。请帮我整理一下...
Exception: 'Thread was being aborted.' :
StackTrace: 'at System.Data.Common.UnsafeNativeMethods.IRowset.GetData(IntPtr hRow, IntPtr hAccessor, IntPtr pData)
at System.Data.OleDb.OleDbDataReader.GetRowDataFromHandle()
at System.Data.OleDb.OleDbDataReader.GetValueBinding(MetaData info)
at System.Data.OleDb.OleDbDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at ExcelToCsvConversion.Controllers.HomeController.Check_In_Masters(String sourceFile, String worksheet2, Int32 colNo, String fieldValue)'
这是我的代码....
public ActionResult ConvertToCsv(FileUpload model)
{
var fileName = model.SourceFile;
FileUpload fileUpload = new FileUpload();
try
{
string filename = Path.GetFileName(model.SourceFile);
model.SourceFile = Path.Combine(Server.MapPath("~/App_Data/uploads"), filename);
model.WorkSheet1 = "Upload file$";
System.Threading.Tasks.Task.Factory.StartNew(() => ConvertExcelToCSV_LT(model));
fileUpload.SourceFile = filename;
}
catch (Exception e)
{
ServerExceptionLog(e);
}
return Json(new { filemodel = fileUpload }, JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
请显示一些代码,如何开始转换。你在使用任务吗?您是否设置了“长时间运行”模式?
-
请检查我有问题更新的代码...
标签: c# asp.net asp.net-mvc multithreading asp.net-mvc-4