Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure服务结构FabricObjectClosedException_C#_Azure_Service Fabric Stateful - Fatal编程技术网

C# Azure服务结构FabricObjectClosedException

C# Azure服务结构FabricObjectClosedException,c#,azure,service-fabric-stateful,C#,Azure,Service Fabric Stateful,我有一个有状态的服务,可以将内容存储在IReliableDictionary中。在部署到本地集群后,我重新启动了主节点以测试故障转移,但是,在我这样做之后,代码StateManager.GetOrAddAsync>(“MyDictionary”)抛出FabricNotPrimaryException,然后在以后的测试中抛出FabricObjectClosedException。我可以检查哪些方面来解决此问题?解决此类错误的基本方法是捕获并记录引发的异常: try { using (var

我有一个有状态的服务,可以将内容存储在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.fabricopobjectclosedexception
添加到Visual Studio,然后在调试器中启用“抛出时中断”:

  • 显示异常设置窗口(调试窗口异常设置
  • 在异常类别列表中选择公共语言运行时异常
  • 单击绿色的+(加号)按钮添加新的异常类型
  • 在文本框中键入System.Fabric.fabricopobjectclosedexception,然后点击enter
  • 添加新异常类型时,已选中“抛出时中断”复选框

    下次在调试器中执行应用程序时,当抛出
    FabriObjectClosedException
    时,调试器将中断,您应该能够理解出错的原因