Web服务结束时的StackOverflow异常(无递归/无限循环)[ASP.NET应用程序]

时间:2017-04-05 14:52:59

标签: c# wcf asp.net-mvc-3

首先,如果我的语言不是最好的话,我想道歉,我实际上不是英语。

首先,我在一家公司工作,并且我正在维护 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的堆栈跟踪。你可以看到我在那里切了一些部分,因为在图片的第一和第二部分有一个重复的特定模式,它也在这两部分之间重复了很多时间,这就是为什么我没有发表它。第一部分是开头,第二部分是结束,第三部分是结束。

WinDbg's stack trace picture

0 个答案:

没有答案