我有一个服务在Azure(不是本地)的服务结构集群中托管,我尝试使用本地计算机上的控制台应用程序调用其中的方法。使用WCF进行通信,我的应用程序在特定端口上设置了HTTPS端点,并为Azure门户中的端口配置了负载平衡规则。群集有6个节点,应用程序是在群集上部署的唯一节点。使用WCF HTTPS端点从控制台应用程序调用服务结构服务
已遵循GitHub上的ServiceFabric.WcfCalc(link),它在使用HTTP端点的本地群集上工作,但在部署后无法使用HTTPS端点调用服务上的方法。我需要做些什么才能使它工作?已尝试遵循示例here,但不知道如何将此配置用于HTTPS,并使用多个节点上的服务供控制台应用程序访问。
在此先感谢。
编辑这是我用来调用服务方法的客户端代码。我在这里将结构:/ URI传递给构造函数。
public class Client : ServicePartitionClient<WcfCommunicationClient<IServiceInterface>>, IServiceInterface
{
private static ICommunicationClientFactory<WcfCommunicationClient<IServiceInterface>> communicationClientFactory;
static Client()
{
communicationClientFactory = new WcfCommunicationClientFactory<IServiceInterface>(
clientBinding: new BasicHttpBinding(BasicHttpSecurityMode.Transport));
}
public Client(Uri serviceUri)
: this(serviceUri, ServicePartitionKey.Singleton)
{ }
public Client(
Uri serviceUri,
ServicePartitionKey partitionKey)
: base(
communicationClientFactory,
serviceUri,
partitionKey)
{ }
public Task<bool> ServiceMethod(DataClass data)
{
try
{
//It hangs here
return this.InvokeWithRetry((c) => c.Channel.ServiceMethod(data));
}
catch (Exception)
{
throw;
}
}
}
当我的本地机器上调试我的控制台应用程序,该应用程序挂在InvokeWithRetry调用,它调用该方法在我的服务织物的服务。该应用程序不会抛出任何异常,并且不会返回到Visual Studio中的调试器。
当您尝试在集群中部署的服务上尝试调用该方法时,您看到什么错误或问题?超时或其他东西? – yoape
我的代码中没有引发异常,尽管我在Service Fabric集群资源管理器中看到以下警告: - “HTTP无法注册URL http:// +:443/26c710ea-38b9-4416-9d70-c1710e698521/8d259277- ed49-4e11-b7ec-fac80075297e-131314658022522000 /。另一个应用程序已经使用HTTP.SYS注册了这个URL。“当我从本地机器上的控制台应用程序调用服务方法时,会发生这种情况。上面编辑的问题反映了这一点。 – dan4291
如果您正确配置了端点,我希望在url中看到HTTPS不是HTTP。 – LoekD