Служба без состояния Asp.Net Core вызывает службу без состояния в Azure Service Fabric

Я пытаюсь вызвать службу без сохранения состояния из Asp.Net Core 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 контроллера, но он попадает в метод репозитория.GetSomething() и не может получить доступ к этому методу. Я не знаю, что мне здесь не хватает.

Любые указатели будут очень полезны. заранее спасибо

Обновлять:

Файл манифеста:

введите здесь описание изображения


person Kokirala Sudheer    schedule 05.04.2018    source источник
comment
Не могли бы вы также опубликовать соответствующие биты ServiceManifest.xml? Насколько вы уверены, что ваша служба IRepository действительно работает?   -  person mrtig    schedule 06.04.2018
comment
Обновлено выше информации о манифесте. И я просто возвращаю строку из репозитория. }   -  person Kokirala Sudheer    schedule 06.04.2018


Ответы (1)


Вам нужно изменить свой CreateServiceInstanceListeners...

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

Ему нужен прослушиватель удаленного взаимодействия, поскольку использование ServiceProxy является вызовом удаленного взаимодействия.

person Phil Wright    schedule 06.04.2018
comment
Превосходно. Это сработало. Вы сэкономили мне много времени. Спасибо - person Kokirala Sudheer; 06.04.2018