Asp.Net Core StateLess Serivce在Azue Service Fabric中调用StateLess Serice

时间:2018-04-05 17:08:06

标签: service-fabric-stateless azure-service-fabric service-fabric-on-premises

我正在尝试从Asp.Net Core Stateless API调用无状态服务。我无法达到无状态服务的方法。

这是Controller动作方法,它将调用无状态服务方法。

 // GET api/values
    [HttpGet]
    public async Task<string> GetAsync()
    {
        var repository = ServiceProxy.Create<IRepository>(
            new Uri("fabric:/Application1/Stateless1"));
        return await repository.GetSomething();
        //return new string[] { "value1", "value2" };
    }

这是无状态服务中的方法。

    internal sealed class Stateless1 : StatelessService, IRepository
    {
    public Stateless1(StatelessServiceContext context)
        : base(context)
    { }

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

听众代码是

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
    {
        return this.CreateServiceInstanceListeners();
    }

我能够点击控制器Get方法,但它在repository.GetSomething()方法中被触及,并且无法访问该方法。我不知道我在这里失踪了什么。

任何指针都会非常有用。提前致谢

更新

清单文件:

enter image description here

1 个答案:

答案 0 :(得分:2)

您需要更改CreateServiceInstanceListeners ...

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
   return this.CreateServiceRemotingInstanceListeners();  
}

它需要远程监听器,因为使用ServiceProxy是一个远程调用。