我无法与安全结构集群建立Wcf连接。由于sotn的建议收集日志后,问题是一个简单的TCP端点未找到异常(TCP代码10060)。端点肯定存在(结构正在解析它,我只提供命名服务),当我检查集群设置时,端口实际上是打开的。因此,我认为必须要有安全保障。但是,使用相同的凭据,我可以为群集创建结构客户端。
群集使用x509证书进行保护。我正在尝试创建一个wcf客户端,可以从部署了Wcf服务的集群外部的VM使用。我按照指南here进行了设置,并here。
string serverCertThumb = "xxx";
string clientCertThumg = "xxx";
string commonName = "mycluster.southcentralus.cloudapp.azure.com";
string connection = " mycluster.southcentralus.cloudapp.azure.com:19000";
var xc = GetCredentials(clientCertThumg, serverCertThumb, commonName);
var resolver = new ServicePartitionResolver(xc, connection);
var myFactory = new WcfCommunicationClientFactory<IData>(WcfUtility.CreateTcpListenerBinding(), null,
resolver, null, null);
var client = myFactory.CreateClient(new System.Uri("fabric:/MyServicePath"));
static X509Credentials GetCredentials(string clientCertThumb, string serverCertThumb, string name)
{
X509Credentials xc = new X509Credentials();
xc.StoreLocation = StoreLocation.CurrentUser;
xc.StoreName = "My";
xc.FindType = X509FindType.FindByThumbprint;
xc.FindValue = clientCertThumb;
xc.RemoteCommonNames.Add(name);
xc.RemoteCertThumbprints.Add(serverCertThumb);
xc.ProtectionLevel = ProtectionLevel.EncryptAndSign;
return xc;
}