我想开始服务结构有状态的actor服务,所以我在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服务项目(采用所有默认值)。该项目以完全相同的方式失败。
解雇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
---------------------------
由于我在Visual Studio 2015.1安装/升级时出现问题,我不确定是否可能与此问题有关。此外,一名同事遵循相同的步骤,没有任何问题。所以我刚刚完成了VS2015.1的直接重新安装,SF SDK和所有先决条件。不幸的是没有变化。 :(
我还应该说,每次遇到此错误,Service Fabric Local Cluster Manager都会中断。如果我尝试打开管理器,我会收到通知:“无法打开本地集群管理器”
另外,我确实将SF应用程序项目作为我的解决方案中的启动项目。 (再次,我有其他SF应用程序工作......它只是在我尝试新的或现有的SF应用程序中的有状态演员服务时就死了。)
我应该想早点提供这个,但这里是callstack ......与提醒有什么关系?
[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
我使用了更有力(更少诊断)的方法。我重建了我的开发机器。基于我在Update 1安装中遇到的奇怪行为,我担心我已经破坏了我的构建盒。我重建了操作系统,重新安装了vs2015.1和SF SDK,现在它运行正常。您的里程可能会有所不同:|
答案 0 :(得分:1)
上面提到的HRESULT对应于结构错误代码NoWriteQuorum。有关错误代码的详情,请参阅https://msdn.microsoft.com/en-us/library/azure/system.fabric.fabricerrorcode.aspx。您的群集是如何配置的 - 节点数量是多少?如何配置您的actor服务(多少分区/分钟和目标副本计数)?
如果你没有调试就开始部署你的应用程序?如果是这样,您是否尝试在服务结构资源管理器或Powershell中查看应用程序的运行状况?
答案 1 :(得分:0)
Visual Studio中的启动项目应设置为Service Fabric应用程序。例如,Actor的Console应用程序项目无法直接启动,因为它们需要通过Service Fabric进行部署和激活。