3

我想摆脱服务结构有状态参与者服务的轮胎,所以我在 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 服务项目(采用所有默认值)。这个项目以完全相同的方式失败了。

  1. 其他人可以确认这种行为吗?(它可能在我的开发环境中)
  2. 关于可能发生的事情有什么建议吗?
  3. 获取有关失败的更多信息的最佳方法是什么?(似乎没有太多跨越 com 边界)
  4. 我应该在视觉工作室工具之外尝试这个吗?

更新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,现在它可以正常工作了。您的里程可能会有所不同:|

4

2 回答 2

3

上面提到的 HRESULT 对应于结构错误代码 NoWriteQuorum。有关错误代码的更多信息,请参阅https://msdn.microsoft.com/en-us/library/azure/system.fabric.fabricerrorcode.aspx。您的集群是如何配置的——有多少节点?你的actor服务是如何配置的(多少个分区/分钟和目标副本数)?

如果您在没有调试的情况下启动您的应用程序,您可以部署您的应用程序吗?如果是这样,您是否尝试在服务结构资源管理器或 Powershell 中查看应用程序的运行状况?

于 2015-12-21T23:43:41.317 回答
0

Visual Studio 中的启动项目应设置为 Service Fabric 应用程序。例如,Actor 的控制台应用程序项目不能直接启动,因为它们需要通过 Service Fabric 部署和激活。

于 2015-12-12T00:45:16.050 回答