我用 C# 编写了一个使用 XML-RPC.net 库的应用程序。该应用程序非常简单,除了 XML-RPC 之外几乎没有做任何事情,一些 Powershell 模拟、一些文件生成和一些身份验证。
这个应用程序在一堆 2012 R1 机器和一些 2008 R2 机器上运行没有问题。最近,我添加了一些额外的 XML-RPC 服务,并将开发转移到运行 Visual Studio 2013 的 2012 R2 机器上(从 2012 年开始)。
立即,在使用 IIS 的外部实例进行调试时,我开始看到“SEHException - 外部组件已引发异常”的实例,或者偶尔会出现访问冲突。这总是在应用程序处于休眠状态时运行,而不是在进行 XML-RPC 调用时。
我想我是一名脚本编写者和工程师,而不是一名程序员,并且我并不为我的专业知识在别处感到羞耻。我读了很多关于如何抛出有关 SEHException 的更多信息的文章,并且正准备在这里发帖寻求一些指示,但我遇到了一个相当模糊的建议,即有人通过将他们的应用程序编译为 x86 解决了几乎相同的问题,而不是任何 CPU。显然这不是一个修复,但我认为它可能会给我一些额外的信息,所以我尝试了它,崩溃完全消失了。
在此应用程序正在运行的所有其他情况下,它已被编译为任何 CPU,并且应用程序池已禁用 x86。
紧抓着稻草——但除了我在同一飞跃中迁移到 Windows 2012 R2 和 Visual Studio 2013 之外,这个新的开发盒还有更多的 RAM——256GB。
作为控制,我构建了一个 8GB RAM 的 2012 R2 机器,安装了 Visual Studio,开始在 Any CPU 中调试……完全没有崩溃。
我在具有 256GB RAM 的盒子上运行了完整的内存测试 - 没有问题。它也没有显示任何其他问题。
它具有相同的 IIS、.NET 和 Visual Studio 补丁级别。
我很欣赏这是一个最广泛的问题,没有代码示例,但希望这还可以。我真的在寻找一些关于如何更好地了解这一点的指针或方向,因为我讨厌不理解事物。
在寻找获取有关 SEHException 的更多信息的方法时,我遇到的难题是,这是一个 Web 服务,我无法可靠地生成异常,它不是通过显式调用方法或任何东西来引发的。仅当 Web 服务正在运行时。
非常感谢任何帮助。