C# 通过远程处理调用无状态服务时的服务结构FabricConnectionDexception
我有一个独立的内部部署服务结构群集,它使用Windows身份验证进行保护 在这个应用程序中,我有一个ASP.NET核心WebApi无状态服务,它试图通过远程处理与另一个无状态服务通信。不幸的是,当WebApi服务尝试RPC到无状态服务时,我遇到以下错误:C# 通过远程处理调用无状态服务时的服务结构FabricConnectionDexception,c#,asp.net-web-api,azure-service-fabric,service-fabric-stateless,C#,Asp.net Web Api,Azure Service Fabric,Service Fabric Stateless,我有一个独立的内部部署服务结构群集,它使用Windows身份验证进行保护 在这个应用程序中,我有一个ASP.NET核心WebApi无状态服务,它试图通过远程处理与另一个无状态服务通信。不幸的是,当WebApi服务尝试RPC到无状态服务时,我遇到以下错误: System.AggregateException: One or more errors occurred. ---> System.Fabric.FabricConnectionDeniedException: Not authori
System.AggregateException: One or more errors occurred. ---> System.Fabric.FabricConnectionDeniedException: Not authorized to connect ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071C43
at Microsoft.ServiceFabric.FabricTransport.NativeServiceCommunication.IFabricServiceCommunicationClient2.EndRequest(IFabricAsyncOperationContext context)
at Microsoft.ServiceFabric.FabricTransport.Client.FabricTransportClient.EndRequest(IFabricAsyncOperationContext context)
at System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context, Boolean expectedCompletedSynchronously)
--- End of inner exception stack trace --
此外,我可以证实这一点
- 当将同一个应用程序部署到“开发集群”(即,我的本地计算机或另一台远程服务结构集群,在一台计算机上运行它的所有节点)时,我没有收到错误-因此,我用来设置多机集群的AD帐户可能会出现问题(我使用的是一个服务器)
- 创建客户端代理时,我会设置安全凭据以使用windows身份验证,即
var transportSettings = new FabricTransportRemotingSettings { SecurityCredentials = new WindowsCredentials() }; Func<IServiceRemotingCallbackClient, IServiceRemotingClientFactory> clientProxyFactory = c => new FabricTransportServiceRemotingClientFactory(transportSettings); var serviceProxyFactory = new ServiceProxyFactory(clientProxyFactory); TService clientProxy = serviceProxyFactory.CreateServiceProxy<TService>(uri); return clientProxy;
var transportSettings=新的FabricTransportRemotingSettings { SecurityCredentials=新WindowsCredentials() }; Func clientProxyFactory=c=>新的FabricTransportServiceRemotingClientFactory(传输设置); var serviceProxyFactory=新serviceProxyFactory(clientProxyFactory); TService clientProxy=serviceProxyFactory.CreateServiceProxy(uri); 返回clientProxy;
- 在上述代码中,如果我改为使用:
然后我得到一个类似的SecurityCredentials=new nonsecuritycredentials()
,但消息略有不同,表示FabricConnectionDexception
客户端未被授权连接。这是有道理的-但同样,可能表明我的传输设置存在问题