作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个有状态服务,将内容存储在 IReliableDictionary 中。部署到本地集群后,我重新启动主节点以测试故障转移,但是,在执行此操作后,代码 StateManager.GetOrAddAsync>("MyDictionary") 抛出 FabricNotPrimaryException,然后在以后的试验中它抛出 FabricObjectClosedException。我可以检查哪些事项来解决此问题?
最佳答案
解决此类错误的基本方法是捕获并记录抛出的异常:
try
{
using (var tx = StateManager.CreateTransaction())
{
await dictionary.AddOrUpdateAsync(tx, dto.Id, dto, (key, _) => dto);
await transaction.CommitAsync();
}
}
catch (FabricObjectClosedException ex)
{
ServiceEventSource.Current.Message(ex.ToString());
throw; // Pass the exception up as we only log it here.
}
但是,您的问题可能是一个非常简单的拼写错误,例如 DTO 类上缺少 [DataContractAttribute]
。在这种情况下,简单地调试问题以快速理解和解决问题可能会更容易。为此,您应该将 System.Fabric.FabricObjectClosedException 添加到 Visual Studio,然后在调试器中启用“抛出时中断”:
添加新的异常类型时,抛出时中断复选框已被选中。
下次在调试器中执行应用程序时,调试器将在抛出 FabricObjectClosedException
时中断,您应该能够理解出了什么问题。
关于c# - Azure Service Fabric FabricObjectClosedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40161893/
我有一个有状态服务,将内容存储在 IReliableDictionary 中。部署到本地集群后,我重新启动主节点以测试故障转移,但是,在执行此操作后,代码 StateManager.GetOrAddA
我是一名优秀的程序员,十分优秀!