c# - .Net Windows 服务崩溃并出现 MSVCR120_CLR0400.dll 异常

标签 c# .net windows-services windows-server-2008-r2 event-viewer

我们在生产服务器中有一个 Windows 服务,它是 Windows Server 2008 r2 标准,并在其中安装了 .net 框架版本 4.5.2。 服务在过去一周内突然停止两次,并出现以下事件查看器来源的异常:

事件 ID:1026,.net 运行时异常:

Application: XXX.Application.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
Stack:
  at System.Buffer.__Memcpy(Byte*, Byte*, Int32)
   at System.Buffer.__Memcpy(Byte*, Byte*, Int32)
   at System.Buffer._Memcpy(Byte*, Byte*, Int32)
   at System.Buffer.Memcpy(Byte*, Byte*, Int32)
   at System.String.ToCharArray()
   at FluentValidation.Internal.Extensions+<>c__DisplayClassd`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.Decimal, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<CoerceToNonGeneric>b__c(System.Object)
   at FluentValidation.Validators.PropertyValidatorContext.get_PropertyValue()
   at FluentValidation.Validators.AbstractComparisonValidator.IsValid(FluentValidation.Validators.PropertyValidatorContext)
   at FluentValidation.Validators.PropertyValidator.Validate(FluentValidation.Validators.PropertyValidatorContext)
   at FluentValidation.Internal.PropertyRule+<Validate>d__8.MoveNext()
   at System.Linq.Enumerable+<SelectManyIterator>d__14`2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
   at System.Collections.Generic.List`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>)
   at System.Linq.Enumerable.ToList[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
   at FluentValidation.AbstractValidator`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Validate(FluentValidation.ValidationContext`1<System.__Canon>)

事件 ID:1000

Faulting application name: XX.Application.exe, version: 2.1.0.5017, time stamp: 0x59b1865e
Faulting module name: MSVCR120_CLR0400.dll, version: 12.0.51209.34209, time stamp: 0x5348a2f4
Exception code: 0xc0000005
Fault offset: 0x0000000000001630
Faulting process id: 0x12a8
Faulting application start time: 0x01d3307a3a9dca66
Faulting application path: XX.Application.exe
Faulting module path: C:\Windows\system32\MSVCR120_CLR0400.dll
Report Id: 5ea7c0b6-a0f0-11e7-8d71-0050568c317d

我用谷歌搜索了一个星期,但找不到任何答案。 你能帮我看看我们的Windows服务可能有什么问题,或者我应该怎么做才能找到问题? 谢谢。

最佳答案

在我发布这个问题后,我们意识到在将代码发布到服务器之前,我们已经使用 teamcity 的 x86 运行平台编译了代码。发布之后,出现了这个问题。但是我们应该用 x64 平台完成这个发布,因为我们的服务器是 64 位的。 意识到这一点后,我们再次从 Visual Studio 获取发布包,并设置了 Release模式和混合平台。

两个星期以来,问题再也没有发生过,所以我想分享那个解决方案。 综上所述,是因为我们发布包的运行平台困惑。如果您遇到过这个问题,您可能应该检查您的发布包运行平台。

关于c# - .Net Windows 服务崩溃并出现 MSVCR120_CLR0400.dll 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46392897/

相关文章:

javascript - 如何下载文件并停留在MVC中的当前页面

c# - 如何在 .NET (C#) 中获取 UserControl 的 HTML 输出?

c - 如何在 C 中调试 Windows 服务启动代码,而不是 C#

c++ - 如何确保 Windows 2008 R2 将 SERVICE_CONTROL_PRESHUTDOWN 控制通知传递给服务

c# - 在 C# 中获取三个月(季度)代码

c# - 如何对加载到内存中的可执行文件进行 CRC 检查?

c# - Window.Activate() 无法正常工作

python - 长时间运行进程的超时和 Windows 服务 (Python)

javascript - 正则表达式 C# 与 javascript 不一致

c# - 图像 Url 出现问题,自动将文件夹名称添加到为图像创建的 URL