如何在 Azure 中使用内部端点。

How to consume internal endpoint in Azure.

我已经弄清楚如何创建内部公开的 WCF 服务,但完全不知道如何从另一个 Web 角色或 Web 应用程序使用此服务?

我遇到了一些示例来回答这个确切的场景,但解释更多信息的链接似乎都已失效。

有人能帮忙吗?

让我们想象一下这个场景:

您有一个 WCF 服务托管在具有内部端点的辅助角色中。它实现了合约 ICalculator,它是一个简单的计算器(ADD、Mult...等)。

在另一端,当单击按钮时,您有一个 Webform 应用程序,您只需发送一些要计算的数据。

这是使用此网络服务的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        var factory = new ChannelFactory<WorkerHost.ICalculator>(new NetTcpBinding(SecurityMode.None));
        var channel = factory.CreateChannel(GetRandomEndpoint());
        Label3.Text =channel.Add (Convert.ToInt32(TextBox1.Text) , Convert.ToInt32(TextBox2.Text)).ToString();

    }

getRanDomeEndpoint() 的代码是

  private EndpointAddress GetRandomEndpoint()
    {
        var endpoints= RoleEnvironment.Roles["WorkerHost"].Instances.Select(i=>i.InstanceEndpoints["CalculatorService"].IPEndpoint).ToArray();
        var r = new Random(DateTime.Now.Millisecond);
        return new EndpointAddress(string.Format("net.tcp://{0}/Calculate", endpoints[r.Next(endpoints.Count() - 1)]));
    }

我已经在 azure 上上传了服务,请在此处查看

http://workerrolewcf.cloudapp.net/default.aspx