我有无状态的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获取真实的原因/异常消息/错误消息?
答案 0 :(得分:2)
您有两个基本选项...从您的代码中发出诊断信息(如错误,应用程序事件等),然后捕获/查询,或在Service Fabric外部运行您的应用程序并在本地调试启动问题。
在SF生产部署中,您需要设置诊断程序,以便您的应用程序可以发出Windows事件跟踪(ETW)事件以及核心Service Fabric运行时发出的事件:
这是一项相当多的工作,但如果您打算了解您的应用程序在生产中所做的事情,那么这是必要的。无论你是否在SF中运行,这也是你需要做的事情(以某种形式或其他形式)。
因为在你的情况下你想调试你的代码中的启动问题,并且因为你有一个基于OWIN Web API的无状态服务,我首先尝试在Service Fabric之外本地调试它,看看是否你可以通过这种方式隔离问题。当然,这只有在你能够在本地运行时才有用,并且b)如果问题不是特定于SF集成/启动本身。但确定这一点的唯一方法可能是尝试在SF运行时之外运行本地。
希望有所帮助......祝你好运!
答案 1 :(得分:0)
我遇到了来自Service Fabric资源管理器的相同通用错误的相同问题。由于我在本地运行,我能够在Visual Studio中打开诊断事件窗口,这给了我更详细的错误消息。如果您没有在本地运行,您仍然可以进行调试。
请参阅以下链接:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-debugging-your-application