我有无状态 Service Fabric 服务。我的服务还有一个 OWIN Web Api 服务端点。如果我在服务启动中遇到任何异常或错误,我会看到所有类型或错误和异常的相同错误消息:
Error event: SourceId='System.FM', Property='State'.
Partition is below target replica or instance count.
所以每次都很难找到真正的问题。 我试过这个:
AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
};
但这并没有帮助。我尝试将所有代码包装在 try/catch 中,但没有捕获到任何异常。
有人知道如何从SF获取真正的原因/异常消息/错误消息吗?
最佳答案
您有两个基本选项...从代码中发出诊断信息(如错误、应用程序事件等),然后捕获/查询该信息,或者在 Service Fabric 外部运行应用程序并在本地调试启动问题。
在 SF 生产部署中,您需要设置诊断,以便您的应用可以发出 Windows 事件跟踪 (ETW) 事件以及核心 Service Fabric 运行时发出的事件:
这是一项相当大的工作量,但如果您想了解应用程序在生产中所做的事情,那么这是必要的。无论您是否在旧金山运行,这也是您需要做的事情(以某种形式)。
由于在您的情况下,您想要调试代码中的启动问题,并且由于您有一个基于 OWIN Web API 的无状态服务,因此我首先尝试在 Service Fabric 之外进行本地调试,看看是否可以您可以通过这种方式隔离问题。当然,只有当您 a) 能够在本地运行并且 b) 如果问题不是特定于 SF 集成/启动本身时,这才会有帮助。但确定这一点的唯一方法可能是尝试在 SF 运行时之外本地运行。
希望有所帮助...祝你好运!
关于azure - 诊断 Service Fabric 应用程序失败的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195427/