Ошибка при создании удаленного прослушивателя в службе состояний службы сервисов (приложение .NET Core) - PullRequest
0 голосов
/ 23 октября 2018

Ошибка: Не содержит определения для «CreateServiceRemotingListener», и не может быть найден метод расширения «CreateServiceRemotingListener», принимающий первый аргумент типа (отсутствует директива using или ссылка на сборку?)

Ниже приведены шаги, которые я выполнил,

  1. Создан интерфейс, который реализует IService.

    `

        using Microsoft.ServiceFabric.Services.Remoting;
        using System.Threading.Tasks;
        public interface IFileService: IService
        {
            Task<string> GetStringByName(string name);
        }
    

    `

  2. Включены следующие пакеты в службу с сохранением состояния, которая называется FileService.

    `

     using System. Fabric;
        using Microsoft.ServiceFabric.Data;
        using Microsoft.ServiceFabric.Data.Collections;
        using Microsoft.ServiceFabric.Services.Communication.Runtime;
        using Microsoft.ServiceFabric.Services.Runtime;
    

    `

  3. Реализован интерфейс IFileService в FileService.

    `

     internal sealed class FileService : StatefulService, IFileService
        {
            public FileService(StatefulServiceContext context)
                : base(context)
            { }
            public FileService(StatefulServiceContext context, IReliableStateManagerReplica stateManagerReplica) : base(context, stateManagerReplica)
            {
            }
    
            public Task<string> GetStringByName(string name)
            {
                return Task.FromResult<string>(name);
            }
    
    
            /// <summary>
            /// Optional override to create listeners (e.g., HTTP, Service Remoting, WCF, etc.) for this service replica to handle client or user requests.
            /// </summary>
            /// <remarks>
            /// For more information on service communication, see https://aka.ms/servicefabricservicecommunication
            /// </remarks>
            /// <returns>A collection of listeners.</returns>
            protected override IEnumerable<ServiceReplicaListener> 
    
        CreateServiceReplicaListeners()
                {
                    return new[] { new ServiceReplicaListener(this.CreateServiceRemotingListener) };
                }}
    

    `

1 Ответ

0 голосов
/ 23 октября 2018

Класс ServiceRemotingExtensions расположен в пространстве имен Microsoft.ServiceFabric.Services.Remoting.Runtime (не входит в него).

Важно отметить, что CreateServiceRemotingListener является устаревшим .Рекомендуемый метод для использования: CreateServiceRemotingReplicaListeners.

Надеюсь, это поможет.


ОБНОВЛЕНИЕ 2019/01/28

Вотпример кода:

using System.Collections.Generic;
using System.Fabric;

using Microsoft.ServiceFabric.Services.Communication.Runtime;
using Microsoft.ServiceFabric.Services.Remoting;
using Microsoft.ServiceFabric.Services.Remoting.Runtime;
using Microsoft.ServiceFabric.Services.Runtime;

namespace JustService
{
    public interface IRemotingService : IService
    {
        // Remoting methods
    }
    internal sealed class JustService : StatefulService, IRemotingService
    {
        public JustService(
            StatefulServiceContext context)
            : base(context)
        {
        }
        protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
        {
            return this.CreateServiceRemotingReplicaListeners();
        }
    }
}

Обратите внимание, что для использования метода расширения CreateServiceRemotingReplicaListeners служба должна реализовать интерфейс, полученный из IService.

...