ServiceFabric / IFabricSecretStoreClient / COM Exception

Я не особо разбираюсь в этом, и, проведя большую часть дня... Я ищу помощи...

Исключение, которое я получаю, таково:

Невозможно преобразовать COM-объект типа "System.__ComObject" в интерфейсный тип "IFabricSecretStoreClient". Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{38C4C723-3815-49D8-BDF2-68BFB536B8C9}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)),

Я могу создать экземпляр прокси для Stateful Service с помощью этого кода:

var servicekey = new ServicePartitionKey(0);
  var queryserviceUri = new Uri("fabric:/XXXX/xxxxxxxxxx");
  var proxyHandle = ServiceProxy.Create<IAnInterfaceName>(queryserviceUri, servicekey, TargetReplicaSelector.PrimaryReplica);

Тогда я использую прокси:

var result = await proxyHandle.OperationOnServiceContract(dataPackage);

В этот момент я получаю ошибку...

Трассировки стека...

в System.Fabric.FabricClient.CreateNativeClient (IEnumerable1 connectionStringsLocal) at System.Fabric.Interop.Utility.<>c__DisplayClass27_0.<WrapNativeSyncInvoke>b__0() at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func1 func, String functionTag, String functionArgs) в System.Fabric.Interop.Utility.WrapNativeSyncInvoke(Действие действия, String functionTag, String functionArgs) в System.Fabric.Interop.Utility.RunInMTA(Действие) в System.Fabric.FabricClient.InitializeFabricClient(SecurityCredentials credentialArg, FabricClientSettings newSettings, String[] hostEndpointsArg) в Microsoft.ServiceFabric.Services.Client.ServicePartitionResolver.<> C.b__21_0() в Microsoft.ServiceFabric.erService.Service.ServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServiceServicesSS Services.Client.ServicePartitionResolver.ResolveHelperAsync (Func 5 resolveFunc, ResolvedServicePartition previousRsp, TimeSpan resolveTimeout, TimeSpan maxRetryInterval, CancellationToken cancellationToken, Uri serviceUri) at Microsoft.ServiceFabric.Services.Communication.Client.CommunicationClientFactoryBase1.GetClientAsync (Uri serviceUri, ServicePartitionKey PartitionKey, TargetReplicaSelector targetReplicaSelector, Строка listenerName, OperationRetrySettings retrySettings, CancellationToken CancellationToken) при Microsoft.ServiceFabric.Services.Remoting.V2.FabricTransport.Client.FabricTransportServiceRemotingClientFactory.GetClientAsync(Uri serviceUri, ServicePartitionKey PartitionKey, TargetReplicaSelector targetReplicaSelector, String listenerName, OperationRetrySettings retrySettings, CancellationToken cancellationToken) в Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient1.GetCommunicationClientAsync(CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Communication.Client.ServicePartitionClient1.InvokeWithRetryAsync [TResult] (Func2 func, CancellationToken cancellationToken, Type[] doNotRetryExceptionTypes) at Microsoft.ServiceFabric.Services.Remoting.V2.Client.ServiceRemotingPartitionClient.InvokeAsync(IServiceRemotingRequestMessage remotingRequestMessage, String methodName, CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.InvokeAsyncV2(Int32 interfaceId, Int32 methodId, String methodName, IServiceRemotingRequestMessageBody requestMsgBodyValue, CancellationToken cancellationToken) at Microsoft.ServiceFabric.Services.Remoting.Builder.ProxyBase.ContinueWithResultV2[TRetval](Int32 interfaceId, Int32 methodId, Task1 задание) в XXXXWeb.Controllers.XXXController.OperationOnServiceContract(XXXRequest xxxRequest) в C:\Users\codputer\Source\Repos\xxxxxx\xxxx.Web\Controllers\XXXController.cs: строка 44

о, я использую это для слушателя:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
  return this.CreateServiceRemotingReplicaListeners();
}

1 ответ

Решение

Как отмечено по этим вопросам:

Эти проблемы с COM возникают всякий раз, когда вы используете более новые пакеты Nuget, предназначенные для более старой версии среды исполнения сервисных структур, возникает такая ошибка.

Вы всегда должны использовать пакеты, нацеленные на одну и ту же версию среды выполнения вашего кластера, в последнем случае используйте пакет более старый, чем версия кластера.

Другие вопросы по тегам