Asp.net mvc 5 MVC Linq在导出到Excel期间引发间歇性空引用异常

Asp.net mvc 5 MVC Linq在导出到Excel期间引发间歇性空引用异常,asp.net-mvc-5,linq-to-entities,entity-framework-6,Asp.net Mvc 5,Linq To Entities,Entity Framework 6,我在6个区域使用相同的代码,每个区域都有一个单独的数据库。很长一段时间以来工作正常,现在6个中的3个出现了失败,出现了空引用异常。类,所有数据库表都保存数据。第一种方法是显示数据的视图,第二种方法由视图中的链接调用以将数据导出到Excel。3个案例正确显示和导出。在其他3种情况中,有2种情况下,数据在视图中正确显示,并且在应该在导出方法中检索数据时抛出null异常。在最后一种情况下,尝试返回视图时会引发null异常。在某些情况下无法理解它是如何工作的,但在其他情况下却无法理解 public Ac

我在6个区域使用相同的代码,每个区域都有一个单独的数据库。很长一段时间以来工作正常,现在6个中的3个出现了失败,出现了空引用异常。类,所有数据库表都保存数据。第一种方法是显示数据的视图,第二种方法由视图中的链接调用以将数据导出到Excel。3个案例正确显示和导出。在其他3种情况中,有2种情况下,数据在视图中正确显示,并且在应该在导出方法中检索数据时抛出null异常。在最后一种情况下,尝试返回视图时会引发null异常。在某些情况下无法理解它是如何工作的,但在其他情况下却无法理解

public ActionResult PVS(string studySite, string currentFilter, int? page)
{
    ViewBag.SelectedID = studySite;
    if (studySite != null)
        page = 1;
    else
        studySite = currentFilter;
    ViewBag.CurrentFilter = studySite;
    IQueryable<PVS> schedule = db.PVS.OrderBy(v => v.SiteNumber).ThenBy(v => v.Participant);
    if (studySite != null)
    {
        string selectedID = studySite;
        images = schedule.Where(v => v.SiteNumber == selectedID);
    }
    int pageSize = 10;
    int pageNumber = (page ?? 1);
    return View(schedule.ToPagedList(pageNumber, pageSize));
}

public void ExportPVSToExcel()
{
    var grid = new System.Web.UI.WebControls.GridView();
    var pvs = db.PVS.OrderBy(p => p.SiteNumber).ThenBy(p => p.Participant).ToList();
    grid.DataSource = pvs;
    grid.DataBind();
    // create an Excel worksheet for the data export
    ExcelPackage excel = new ExcelPackage();
    var workSheet = excel.Workbook.Worksheets.Add("PVS");
    var totalCols = grid.Rows[0].Cells.Count;
    var totalRows = grid.Rows.Count;
    var headerRow = grid.HeaderRow;
    for (var i = 1; i <= totalCols; i++)
    {
        workSheet.Cells[1, i].Value = headerRow.Cells[i - 1].Text;
    }
    for (var j = 1; j <= totalRows; j++)
    {
        for (var i = 1; i <= totalCols; i++)
        {
            var data = pvs.ElementAt(j - 1);
            workSheet.Cells[j + 1, i].Value = data.GetType().GetProperty(headerRow.Cells[i - 1].Text).GetValue(data, null);
        }
    }
    using (var memoryStream = new MemoryStream())
    {
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;  filename=PVS.xlsx");
        excel.SaveAs(memoryStream);
        memoryStream.WriteTo(Response.OutputStream);
        Response.Flush();
        Response.End();
    }
}
public ActionResult PVS(string studySite、string currentFilter、int?页)
{
ViewBag.SelectedID=studySite;
如果(studySite!=null)
page=1;
其他的
studySite=currentFilter;
ViewBag.CurrentFilter=studySite;
IQueryable schedule=db.PVS.OrderBy(v=>v.SiteNumber),然后是by(v=>v.Participant);
如果(studySite!=null)
{
字符串selectedID=studySite;
images=schedule.Where(v=>v.SiteNumber==selectedID);
}
int pageSize=10;
整数页码=(第1页);
返回视图(schedule.ToPagedList(pageNumber,pageSize));
}
public void ExportPVSToExcel()
{
var grid=new System.Web.UI.WebControls.GridView();
var pvs=db.pvs.OrderBy(p=>p.SiteNumber).ThenBy(p=>p.Participant.ToList();
grid.DataSource=pvs;
grid.DataBind();
//为数据导出创建Excel工作表
ExcelPackage excel=新的ExcelPackage();
var工作表=excel.Workbook.Worksheets.Add(“PVS”);
var totalCols=grid.Rows[0].Cells.Count;
var totalRows=grid.Rows.Count;
var headerRow=grid.headerRow;
对于(var i=1;i