回国后查看.NET MVC的StackOverflow例外(.NET MVC StackOverfl

2019-10-24 02:23发布

我得到我的.NET MVC项目“System.StackOverflowException”查看已发送到客户端后。 查看正确渲染,使客户端看到的任何错误。 但是,服务器与StackOverflow的异常之后崩溃。 我只在IISExpress / VisualStudio中测试了这个,而不是在IIS。

我有一个远程服务器上的HTML文件。 我在加载HTML文件是这样的:

using (WebClient client = new WebClient() 
{Credentials = new NetworkCredential(Username, Password)})
{
    string html = client.DownloadString(url);
    viewModel.Pages.Add(html);
}

当“页数”可以包含多个HTML片段。 不过,我使用的测试页面是一个完整的HTML页面,以“DOCTYPE”,“头”,“身体”等节点。

在我看来,我在渲染页面是这样的:

foreach(var page in Model.Pages)
{
    @Html.Raw(page)
}

正如我所说,页面呈现正确,但服务器之后崩溃。 我没有看到正在作出任何递归调用。 我试图使用调试诊断工具来解决,但不能得到任何crashdumps来填充。

此外,如果我呈现“页面”不@ Html.Raw()碰撞,不会发生(但是,页然后不正确地呈现例如LT / GT括号被取代。“>”中/ “<”,除其他字符)

我怀疑它可能有一些做的“HTML”的字符串的长度,或者页面的内容。 我还有一个网站地图页面,正确的是简单,负载,并且不会导致服务器错误。

唯一的例外是在不同的地方出现,以及:System.Web.dll中,mscorlib.dll中,并System.Runtime.Serialization.dll

我该如何解决这个StackOverflow的异常?

是否有一个字符串的大小可以用@ Html.Raw()呈现有限制吗?

外部堆栈跟踪:

System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.HasOpenAttribute.get()未知System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.WriteState.get()未知系统。 Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlJsonWriter.WriteStartAttribute(字符串前缀,字符串的localName,串NS)未知system.xml.dll的!System.Xml.XmlWriter.WriteAttributeString(字符串的localName,字符串值)未知的系统.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonWriterDelegator.WriteInt(int值)未知System.Runtime.Serialization.dll!System.Runtime.Serialization.IntDataContract.WriteXmlValue(System.Runtime.Serialization.XmlWriterDelegator作家, obj对象,System.Runtime.Serialization.XmlObjectSerializerWriteContext上下文)未知System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter,obj对象,SYST em.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson背景下,System.RuntimeTypeHandle declaredTypeHandle)未知System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract,System.Runtime。 Serialization.XmlWriterDelegator的XmlWriter,obj对象,System.RuntimeTypeHandle declaredTypeHandle)未知System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract,System.Runtime.Serialization.XmlWriterDelegator XMLWriter的, obj对象,布尔verifyKnownType,System.RuntimeTypeHandle declaredTypeHandle,System.Type的declaredType)将未知System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,obj对象,SYSTE m.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 ,obj对象,布尔isDeclaredType,布尔writeXsiType,INT declaredTypeID,System.RuntimeTypeHandle declaredTypeHandle)未知System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,obj对象,布尔isDeclaredType,布尔writeXsiType,INT declaredTypeID,System.RuntimeTypeHandle declaredTypeHandle)未知[轻型功能]
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonCollectionDataContract.WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator jsonWriter,obj对象,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson背景下,System.RuntimeTypeHandle declaredTypeHandle)未知系统.Runtime.Serialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(System.Runtime.Serialization.DataContract dataContract,System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,obj对象,System.RuntimeTypeHandle declaredTypeHandle)未知System.Runtime。 Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract,System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,obj对象,布尔verifyKnownType,System.RuntimeTypeHandle declaredTypeHandle,System.Type的declaredType)将未知的系统.Runtime.Ser ialization.dll!System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.SerializeWithXsiType(System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,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,obj对象,布尔isDeclaredType,布尔writeXsiType,INT declaredTypeID,System.RuntimeTypeHandle declaredTypeHandle)未知System.Runtime .Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator的XmlWriter,obj对象,布尔isDeclaredType,布尔writeXsiType,INT declaredTypeID,System.RuntimeTypeHandle declaredTypeHandle)未知

从[轻型功能]至端部的部分重复,直到崩溃。

Edit:

Just found this error (among others) on the Output window: A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll

Answer 1:

通过返回的不是“视图(模型)”“内容”解决了这个。

以前,我是添加HTML字符串到视图模型,并通过返回渲染页面:

return View(model);

当我改变了返回的内容,该服务器没有崩溃。

return Content(htmlString);


文章来源: .NET MVC StackOverflow exception after returning View