2016-07-14 72 views
3

我有一个演员的方法,看起来像这样:服务织物演员州Actiing就像一个队列

ConditionalValue<Command> result = await this.StateManager.TryGetStateAsync<Command>(key); 

await this.StateManager.TryRemoveStateAsync(key);  

return result.Value; 

当我从ActorMethod返回或致电this.SaveStateAsync(),它会引发与以下异常:

System.Fabric.FabricException: The given key was not present. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071C13 at System.Fabric.Interop.NativeRuntime.IFabricKeyValueStoreReplica6.Remove

+0

你可以显示整个堆栈跟踪吗? –

回答

2

整天我花了这个,然后我想通了。

在同一个actor的另一个方法中,我们排队在另一个方法调用中被删除的项目。

通过查看StateManager我看到的价值有加的的checkStatus,所以我增加了后续的呼叫进入排队方法

await this.SaveStateAsync(); 

和去排队,然后没有任何问题的工作。

这可能是一个边缘情况,但不要在一个方法中进行添加,而是在另一个方法中进行检索和删除,而不在两者之间保存状态。

提醒我一点EF上下文。