Azure service fabric ServiceFabric/IFabricSecretStoreClient/COM异常

Azure service fabric ServiceFabric/IFabricSecretStoreClient/COM异常,azure-service-fabric,visual-studio-2019,Azure Service Fabric,Visual Studio 2019,我在这方面没有什么发现,在度过了一天的大部分时间后,我正在寻求帮助 我得到的例外是: 无法将“System.\u ComObject”类型的COM对象强制转换为接口 键入“IFabricSecretStoreClient”。此操作失败,因为 对具有IID的接口的COM组件的QueryInterface调用 “{38C4C723-3815-49D8-BDF2-68BFB536B8C9}”由于以下原因失败 错误:不支持此类接口(HRESULT的异常:0x80004002 (E_NOINTERFACE

我在这方面没有什么发现,在度过了一天的大部分时间后,我正在寻求帮助

我得到的例外是:

无法将“System.\u ComObject”类型的COM对象强制转换为接口 键入“IFabricSecretStoreClient”。此操作失败,因为 对具有IID的接口的COM组件的QueryInterface调用 “{38C4C723-3815-49D8-BDF2-68BFB536B8C9}”由于以下原因失败 错误:不支持此类接口(HRESULT的异常:0x80004002 (E_NOINTERFACE))

我能够用以下代码实例化有状态服务的代理:

var servicekey = new ServicePartitionKey(0);
  var queryserviceUri = new Uri("fabric:/XXXX/xxxxxxxxxx");
  var proxyHandle = ServiceProxy.Create<IAnInterfaceName>(queryserviceUri, servicekey, TargetReplicaSelector.PrimaryReplica);
在这一点上,我得到了错误

Stacktrace

位于System.Fabric.FabricClient.CreateNativeClient(IEnumerable
1
连接字符串(本地)位于
System.Fabric.Interop.Utility.c__显示类27_0.b_0()
位于System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func
1 func、字符串functionTag、字符串functionrgs)位于 System.Fabric.Interop.Utility.WrapNativeSyncInvoke(操作, 字符串函数标记,字符串函数(RGS)位于 System.Fabric.Interop.Utility.RunInMTA(操作)位于 System.Fabric.FabricClient.InitializeFabricClient(SecurityRedentials credentialArg,FabricClientSettings新闻设置,字符串[] hostEndpointsArg)在 Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver.c.b_u21_0() 在 Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver.GetClient() 在 Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver.ResolveHelperAsync(Func
5
resolveFunc、ResolvedServicePartition previousRsp、TimeSpan
resolveTimeout、TimeSpan maxRetryInterval、CancellationToken
cancellationToken,Uri serviceUri)位于
Microsoft.ServiceFabric.Services.Communication.Client.CommunicationClientFactoryBase
1.GetClientSync(Uri serviceUri、ServicePartitionKey、partitionKey、TargetReplicaSelector targetReplicaSelector、字符串listenerName、OperationRetrySettings retrySettings,CancellationToken CancellationToken)位于 Microsoft.ServiceFabric.Services.Remoting.V2.FabricTransport.Client.FabricTransportServiceRemotingClientFactory.GetClientSync(Uri serviceUri、ServicePartitionKey、partitionKey、TargetReplicaSelector targetReplicaSelector、字符串listenerName、OperationRetrySettings retrySettings,CancellationToken CancellationToken)位于 Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient
1.GetCommunicationClientAsync(CancellationToken
取消令牌)在
Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient
1.InvokeWithRetryAsync[TResult](Func
2
func,CancellationToken CancellationToken,类型[]
doNotRetryExceptionTypes)位于
Microsoft.ServiceFabric.Services.Remoting.V2.Client.ServiceRemotingPartitionClient.InvokeAsync(IServiceRemotingRequestMessage
remotingRequestMessage、String方法名、CancellationToken
取消令牌)在
Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.InvokeAsyncV2(Int32
interfaceId、Int32 methodId、String methodName、,
IServiceRemotingRequestMessageBody requestMsgBodyValue,
取消令牌(取消令牌)位于
Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.ContinueWithResultV2[TRetval](Int32
interfaceId,Int32 methodId,任务
1任务)位于 XXXXWeb.Controllers.xxx控制器.操作服务合同(xxx请求 xxx请求)在 C:\Users\codputer\Source\Repos\xxxxxx\xxxx.Web\Controllers\XXXController.cs:line 44

哦,我用这个作为听众:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
  return this.CreateServiceRemotingReplicaListeners();
}
protectedoverride IEnumerable CreateServiceReplicaListeners()
{
返回这个.CreateServiceRemotingReplicaListeners();
}

如上述问题所述:

每当您使用针对旧版本service fabric runtime的更新Nuget包时,就会出现这些COM问题,这种错误就会发生


您应该始终使用针对相同版本的群集运行时的软件包,在最后一种情况下,使用比群集版本旧的软件包。

您可以在问题中指定:SDK和运行时的版本,使用这些服务的位置吗?客户机托管在哪里,客户机是什么类型,服务被称为托管在哪里!这似乎是相同的错误信息:解决方案是升级是的,很可能,只是想在回答任何问题之前确认版本,很多人最近都遇到了这个问题,真的希望有更好的错误。。。我理解为什么错误提到COM接口。。。。但是,有多少人知道COM仍然处于servicefabric远程处理的保护之下?在所有的伏都教魔法的掩护下,难道没有一个界面在运行时检查这个,并抛出一个异常-界面不匹配-升级您的版本!
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
  return this.CreateServiceRemotingReplicaListeners();
}