【发布时间】:2016-08-16 03:25:29
【问题描述】:
这是我见过的最奇怪的错误,我不知道原因是什么。在 VS2013 中,我有一个使用 datatables.net 和中继器的 aspx 页面。页面加载正常并正确显示,然后几秒钟后我得到了
"System.Web.dll 中发生'System.StackOverflowException' 类型的未处理异常"
奇怪的是,如果我在我的 SQL 中执行“TOP 76”,我不会收到该错误,但是如果我执行“TOP 77”或更高版本,我会收到该错误。
我已经多次重新启动,删除并重新创建了不同名称的页面。尝试删除 datatables.net。我尝试替换单引号(认为这可能会弄乱我的标记)。但似乎没有任何效果。
这很奇怪,因为我在其他页面上具有相同的类型/样式/代码,但数据越来越少,而且它们都可以正常工作。
下一步是重新安装 VS2013,因为我想不出其他可以尝试的方法。任何帮助将不胜感激,因为我很困惑。
这显示了 Visual Studio 放弃之前的 5,000 个条目
System.Runtime.Serialization.dll!System.Runtime.Serialization.TypeHandleRefEqualityComparer.GetHashCode(System.Runtime.Serialization.TypeHandleRef obj)
mscorlib.dll!System.Collections.Generic.Dictionary<System.Runtime.Serialization.TypeHandleRef,System.Runtime.Serialization.IntRef>.FindEntry(System.Runtime.Serialization.TypeHandleRef key)
mscorlib.dll!System.Collections.Generic.Dictionary<System.Runtime.Serialization.TypeHandleRef,System.Runtime.Serialization.IntRef>.TryGetValue(System.Runtime.Serialization.TypeHandleRef key, out System.Runtime.Serialization.IntRef value)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.JsonDataContractCriticalHelper.GetId(System.RuntimeTypeHandle typeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.JsonDataContractCriticalHelper.GetJsonDataContract(System.Runtime.Serialization.DataContract traditionalDataContract)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool verifyKnownType, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle objectTypeHandle, System.Type objectType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle, System.Type declaredType)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
[Lightweight Function]
/* lots of lines omitted */
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle)
[Lightweight Function]
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, System.RuntimeTypeHandle declaredTypeHandle)
The maximum number of stack frames supported by Visual Studio has been exceeded.
这是aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/OxintMaster.master" AutoEventWireup="true" CodeBehind="inactivereport.aspx.cs" Inherits="oxint.com._40.admin.contrib.inactivereport" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="grid">
<div class="row cells12">
<div class="cell colspan12">
<h3>Companies assigned to Inactive Contributors Report (<asp:Literal runat="server" ID="litCount" ></asp:Literal>)</h3>
</div>
</div>
<table id="mysearchresultstable" class="dataTable striped" data-page-length='25'>
<thead>
<tr>
<th>Contributor</th>
<th style="text-align:center;">Count</th>
<th style="text-align:center;">Action</th>
</tr>
</thead>
<tbody>
<%try
{%>
<asp:Repeater runat="server" ID="rptData1">
<ItemTemplate>
<tr>
<td style="white-space:nowrap;">
<a href='/admin/contrib/cndisplay.aspx?id=<%#Eval("Items[0].Value")%>'>
<asp:Literal runat="server" ID="litName"></asp:Literal>
</a>
</td>
<td style="white-space:nowrap;text-align:center;"><%#Eval("Items[3].Value")%></td><!--count-->
<td style="white-space:nowrap;text-align:center;">
<a href='/admin/contrib/inactiveview.aspx?id=<%#Eval("Items[0].Value")%>'><span class="mif-info"></span>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<%}
catch (Exception ex) { Response.Write(ex.Message); } %>
</tbody>
</table>
</div>
<script>
$(document).ready(function () {
/*$.fn.dataTable.moment('dd MMM yyyy HH:mm');*/
$('#mysearchresultstable').dataTable(
{
/*"order": [[1, "asc"]],*/
/*responsive: true,*/
"lengthMenu": [25, 50, 100],
"pagingType": "full",
"oLanguage": { "sSearch": "Filter:" },
"aoColumns": [null, null, { "bSortable": false }]
}
);
});
</script>
</asp:Content>
下面是代码
using ApplicationClasses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace oxint.com._40.admin.contrib
{
public partial class inactivereport : System.Web.UI.Page
{
private int iCount { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
rptData1.ItemDataBound += rptData1_ItemDataBound;
string sData = "SELECT contributor.referenceno,contributor.firstname,contributor.lastname,COUNT(contributor.referenceno) As Count " +
"FROM ((Contribprofile inner join contributor on Contribprofile.referenceno=contributor.referenceno) " +
"inner join Profilecompany on Contribprofile.companyid=Profilecompany.companyid) " +
"where Contribprofile.iscurrent =1 and not contributor.status in ('Full','Trial') " +
"group by contributor.Referenceno,contributor.firstname,contributor.lastname ";
rptData1.DataSource = new DataAccessFunctions.DataAccess().GetData(sData, null);
rptData1.DataBind();
}
}
void rptData1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
GenericData oData = (GenericData)e.Item.DataItem;
iCount += ApplicationSystemFunctions.SystemFunctions.ParseInt(oData.Items[3].Value);
litCount.Text = iCount.ToString();
Literal oLiteral = (Literal)e.Item.FindControl("litName");
oLiteral.Text = string.Format("{0} {1}", oData.Items[1].Value, oData.Items[2].Value.Replace("'", "-"));
}
}
}
【问题讨论】:
-
为什么你的 html 上有一个 try-catch 块?
-
堆栈跟踪怎么样?
-
嗯,这似乎是一个显而易见的问题,但是您的数据库中的记录是否超过 76 条?
-
Try/Catch 是绝望,它没有帮助。堆栈跟踪“源不可用”当错误窗口弹出时,您可以确定并继续,按任一结束执行。 DB 查询返回 246 条记录。它们在附件中。 (以上链接)
-
在 IIS Express 和发布 IIS 中是否发生?
标签: c# asp.net sql-server datatables stack-overflow