我正在使用 MVC4 和 C#,并且在循环浏览模型时尝试在视图中构建和排列,由于某种原因,我收到“超时已过期。在操作或服务器完成之前超时时间已过没有回应。” 如果我删除我尝试构建数组 arr1 和 arr2 的部分并将它们发送到名为 ArrTotal 的方法,它工作正常。这似乎很简单,不知道为什么会导致超时。它应该在与以前相同的查询期间构建数组,并且 ArrTotal 方法所做的只是将两个数组中的值相加,不应该发生新的查询导致服务器超时。
@model Tuple<Namespace.Models.Class1[], Namespace.Models.Class2[]>
....
@{
int i, x = 0;
int[] arr1;
int[] arr2;
}
@foreach (var item in Model.Item1)
{
arr1[i] = item.count;
<tr>
<td>@item.year</td>
<td>@item.month</td>
<td>@item.count</td>
</tr>
i++;
}
....
@foreach (var item in Model.Item2)
{
arr2[x] = item.count;
<tr>
<td>@item.year</td>
<td>@item.month</td>
<td>@item.count</td>
</tr>
x++;
}
....
@{
int[] total = Namespace.Models.GetTotal.ArrTotal(arr1, arr2);
}
@foreach (var t in total)
{
<tr>
<td>@t</td>
</tr>
}
编辑 - 更多信息:这是我运行两个查询的控制器:
var start = DateTime.Today.AddMonths(-15);
var query1 = (from t in db.table1
where t.ExportTemplate == "template1" && t.LogDate >= start
group t by new { Year = t.LogDate.Year, Month = t.LogDate.Month } into tg
orderby tg.Key.Year, tg.Key.Month
select new Class1
{
year = tg.Key.Year,
month = tg.Key.Month,
count = tg.Select(s => s.ObjectGUID).Distinct().Count()
}
);
var query2 = (from t in db2.table2
where t.UserID == 3 && t.RequestID == 3 && t.ErrorID == 0 && t.LogDate >= start
group t by new { Year = t.LogDate.Value.Year, Month = t.LogDate.Value.Month } into tg
orderby tg.Key.Year, tg.Key.Month
select new Class2
{
year = tg.Key.Year,
month = tg.Key.Month,
count = tg.Select(s => s.GID).Distinct().Count()
}
);
return View(System.Tuple.Create(query1.ToArray(), query2.ToArray()));
它是超时的返回视图。就像我说的,只要我不尝试从视图构建数组,它就可以工作