c# - 控制台应用程序客户端到 Service Fabric 无状态服务

标签 c# azure console azure-service-fabric stateless

我正在学习 SF,现在正在尝试构建无状态服务的控制台客户端。

尝试按照此处的说明进行操作:https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-connect-and-communicate-with-services

并将其添加到我的 StatelessService 类中

    public interface IMyService : IService
    {
        Task<string> HelloWorldAsync();
    }

和一个简单的实现

    public Task<string> HelloWorldAsync()
    {
        return Task.FromResult("HELLO FROM SERVICE!");
    }

其余不变。

在我的控制台应用程序中,我有

IMyService helloWorldClient = ServiceProxy.Create<IMyService>(
   new Uri("fabric:/RestGateway/StatelessGateway1"));
string message = await helloWorldClient.HelloWorldAsync();

该服务部署到我的本地集群,似乎工作正常(绿色按钮),但在调用 helloWorldClient.HelloWorldAsync() 时出现异常。

知道如何解决这个问题吗?

最佳答案

不要忘记向您的服务添加通信监听器,如下所示:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    yield return new ServiceInstanceListener(ServiceRemotingExtensions.CreateServiceRemotingListener(this, Context));
}

注意:

调用CreateServiceRemotingListener创建一个特定的communication listener只能在集群内部使用。因此,当从您的开发计算机与开发集群上运行的服务进行通信时,这将起作用。您不能像这样与在不同机器上运行的服务进行通信。

要从外部访问您的集群,您可以使用 ServiceBus , WCFOWIN例如。 (或者你自己构建的东西)

关于c# - 控制台应用程序客户端到 Service Fabric 无状态服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40910141/

相关文章:

c# - 正确使用带时间戳数据的主键

asp.net-mvc - 如何在 Azure 中运行自定义域名

arrays - 是否可以在数据工厂复制事件中压平 json 文件?

python - 使用内联脚本时在 Python 中将 unicode 字符打印到控制台的正确方法

c# - 扫描的位图横向读取,翻转? (C#)

C# 隐式类型变量重新初始化

console - 为什么 Visual Studio 2015 控制台运行程序无法识别 MSpec?

c# - 通过串口发送 "ENTER" key

c# - Lambda 表达式语法

azure - 如何使用 PowerShell 创建使用帐户 key 签名的 Azure 容器 SAS token ?