【问题标题】:Asp.Net Core StateLess Serivce Calling StateLess Serice in Azue Service FabricAsp.Net Core StateLess Service 在 Azure Service Fabric 中调用 StateLess 服务
【发布时间】:2018-09-15 14:25:40
【问题描述】:

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

这是将调用无状态服务方法的控制器操作方法。

 // 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() 方法中被点击,并且无法访问该方法。我不知道我在这里错过了什么。

任何指针都会很有帮助。提前致谢

更新:

清单文件:

【问题讨论】:

  • 您能否也发布ServiceManifest.xml 的相关内容?您有多确定您的 IRepository 服务正在实际运行?
  • 在清单信息上方更新。我只是从存储库返回字符串 public async Task GetSomething() { return await Task.FromResult("HELLO FROM SERVICE!"); }

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


【解决方案1】:

您需要更改您的 CreateServiceInstanceListeners...

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

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

【讨论】:

  • 优秀。有效。你为我节省了很多时间。谢谢
猜你喜欢
  • 2019-04-07
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2021-11-03
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
相关资源
最近更新 更多