首先,如果我的语言不是最好的话,我想道歉,我实际上不是英语。
首先,我在一家公司工作,并且我正在维护 ASP.NET MVC 3.0 应用程序。最近,我工作的客户提交了一份报告,告诉他当他验证某个页面时(我将在后面描述它是如何工作的),该应用程序正在保存这些值,但返回了一个错误页面。
经过一些研究后,我发现应用程序在 webservice的调用结束时收到 StackOverflow例外。 mscorlib.dll 中会出现此异常。
问题并非每次都会发生,只有当有很多产品与页面中验证的产品相关时才会发生。
我尝试使用 WinDbg 获取有关 StackOverflow异常的更多信息,但它并没有真正帮助我...... The first warning I caught was this picture.
如果您有任何问题或信息,请随时告诉我。
编辑:
我没有异常细节,没有堆栈跟踪等。我唯一拥有的就是我之前提到的图片。
调用堆栈的安装:
mscorlib.dll!System.Text.StringBuilder.appendFormatHelper(System.IFormatProvider provider,string format,System.Paramsarray args)+ 0x363 bytes
关于代码:
我通过以下代码调用网络服务,
var retour = WServiceEtape.SavePassageSaisiePere(
new DtoSaisiePassagePere
{
PassagePrincipal = _passagePrincipal,
IsUpdateFils = passageDejaExistant,
PassagePere = _passageAssocie,
IsUpdatePere = passageAssocieDejaExistant,
PiecesJointesToSave = piecesJointesToSave.ToList(),
PiecesJointesToDelete = piecesJointesToDelete.ToList(),
LitigesToSave = litigesToSave.ToList(),
RelancesToDelete = relancesToDelete.ToList(),
DecalageHoraire = decalageHoraire,
ModeSaisie = GetModeSaisie(),
IdPassagePrecedent = identifiantPassagePrecedent
});
以下是网络服务的方法:
public PassagePere SavePassageSaisiePere(DTO.DtoSaisiePassagePere parameters)
{
try
{
IEtapeManagementService service = IoCFactory.Instance.CurrentContainer.Resolve<IEtapeManagementService>();
return service.SavePassageSaisiePere(
parameters.PassagePrincipal,
parameters.IsUpdateFils,
parameters.PassagePere,
parameters.IsUpdatePere,
parameters.PiecesJointesToSave,
parameters.PiecesJointesToDelete,
parameters.LitigesToSave,
parameters.RelancesToDelete,
parameters.DecalageHoraire,
parameters.ModeSaisie);
}
catch (ExceptionsDefinitions.IncompleteTransactionException ex)
{
//log exception for manage health system
ILoggingManager traceManager = IoCFactory.Instance.CurrentContainer.Resolve<ILoggingManager>();
traceManager.LoggingError(ex.Message);
//propagate exception to client
ServiceError detailedError = new ServiceError()
{
ErrorMessage = Resources.Messages.Exception_InvalidArguments
};
throw new FaultException<ServiceError>(detailedError);
}
}
在上一个方法结束后,在 Visual Studio 中运行debuger时,会出现 StackOverflow异常。
第二次编辑:
这是WinDbg的堆栈跟踪。你可以看到我在那里切了一些部分,因为在图片的第一和第二部分有一个重复的特定模式,它也在这两部分之间重复了很多时间,这就是为什么我没有发表它。第一部分是开头,第二部分是结束,第三部分是结束。