我想摆脱服务结构有状态参与者服务的轮胎,所以我在 VS2015.1 中创建了一个合适的项目,并且对生成的代码没有任何更改。然后我运行/调试了解决方案。我收到以下错误:
System.Runtime.InteropServices.COMException was unhandled
Message: An exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Fabric.dll and wasn't handled before a managed/native boundary
Additional information: Exception from HRESULT: 0x80071BC5
考虑到我的应用程序中现有服务之间可能存在一些干扰,我还构建了一个全新的服务结构解决方案和有状态的 Actor 服务项目(采用所有默认值)。这个项目以完全相同的方式失败了。
- 其他人可以确认这种行为吗?(它可能在我的开发环境中)
- 关于可能发生的事情有什么建议吗?
- 获取有关失败的更多信息的最佳方法是什么?(似乎没有太多跨越 com 边界)
- 我应该在视觉工作室工具之外尝试这个吗?
更新1:
解除 COMException 后,我还得到:
---------------------------
Microsoft Visual Studio
---------------------------
Unable to start debugging 'C:\SfDevCluster\Data\_App\Node.3\Application1Type_App41\Actor1Pkg.Code.1.0.0\Actor1.exe'.
The process has been terminated.
Refresh the process list before attempting another attach.
---------------------------
OK
---------------------------
更新 2:
由于我在 Visual Studio 2015.1 安装/升级方面遇到问题,我不确定这是否与此问题有关。此外,一位同事遵循相同的步骤并且没有问题。所以我刚刚直接重新安装了VS2015.1,SF SDK,以及所有的先决条件。不幸的是没有变化。:(
我还应该说,每次我遇到这个错误时,Service Fabric Local Cluster Manager 也会中断。如果我尝试打开管理器,我会收到通知:“无法打开本地集群管理器”
此外,我确实将 SF 应用程序项目作为解决方案中的启动项目。(再次,我有其他 SF 应用程序工作......只要我在新的或现有的 SF 应用程序中尝试有状态的 Actor 服务,它就会死掉)。
更新 3:
我应该早点提供这个,但这里是调用堆栈......与提醒有关吗?
[Managed to Native Transition]
System.Fabric.dll!System.Fabric.KeyValueStoreItemEnumerator.MoveNextHelper() Unknown
System.Fabric.dll!System.Fabric.Interop.Utility.WrapNativeSyncInvoke<bool>(System.Func<bool> func, string functionTag, string functionArgs) Unknown
System.Fabric.dll!System.Fabric.KeyValueStoreItemEnumerator.MoveNext() Unknown
Microsoft.ServiceFabric.Actors.dll!Microsoft.ServiceFabric.Actors.KvsActorStateProvider.Enumerate<Microsoft.ServiceFabric.Actors.ActorReminderData>(string keyPrefix, System.Func<byte[], Microsoft.ServiceFabric.Actors.ActorReminderData> deserializeFunc) Unknown
Microsoft.ServiceFabric.Actors.dll!Microsoft.ServiceFabric.Actors.KvsActorStateProvider.Microsoft.ServiceFabric.Actors.IActorStateProvider.LoadRemindersAsync.AnonymousMethod__2a() Unknown
mscorlib.dll!System.Threading.Tasks.Task.Execute() Unknown
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot) Unknown
mscorlib.dll!System.Threading.Tasks.Task.ExecuteEntry(bool bPreventDoubleExecution) Unknown
mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch() Unknown
更新 4
我使用了一种更有力(而且诊断更少)的方法。我重建了我的开发机器。基于我在 Update 1 安装中遇到的奇怪行为,我担心我的构建盒受到了损害。我重建了操作系统,重新安装了 vs2015.1 和 SF SDK,现在它可以正常工作了。您的里程可能会有所不同:|