如何在 Azure Service Fabric ASP.NET Core 有状态服务中获取

我们如何访问有状态服务的 Controller 类中的 ParitionInfo 对象?


这是该对象的链接:https : //docs.microsoft.com/en-us/dotnet/api/system.fabric.servicenotification.partitioninfo?view=azure-dotnet


public class MyConntroller : ControllerBase

{

  [HttpPost]

  public async Task<IActionResult> Save(MyObject obj)

  {

     //Here I would like to access ParitionInfo object. How?!

  }

}

这是 ASP.NET Core 有状态服务中的服务定义,可以从定义它的基类轻松获取对象:


    /// <summary>

    /// The FabricRuntime creates an instance of this class for each service 

    /// type instance. 

    /// </summary>

    internal sealed class MyStatefulService : StatefulService

    {

        public MyStatefulService(StatefulServiceContext context)

            : base(context)

        { }


        /// <summary>

        /// Optional override to create listeners (like tcp, http) for this service instance.

        /// </summary>

        /// <returns>The collection of listeners.</returns>

        protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()

        {

            return new ServiceReplicaListener[]

            {

                new ServiceReplicaListener(serviceContext =>

                    new KestrelCommunicationListener(serviceContext, (url, listener) =>

                    {

                        ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting Kestrel on {url}");


                    }))

            };

        }

我应该创建一个单例类,通过 DI 连接它,然后让 DI 框架将其实例传递给控制器类吗?是否有更好的捷径来实现访问 ParitionInfo 数据的目标?


噜噜哒
浏览 161回答 1
1回答

杨魅力

你在正确的道路上。IStatefulServicePartition向您的MyConntroller构造函数添加一个参数。在ConfigureServices,注册服务分区使用this.Partition。例如:.AddSingleton<IStatefulServicePartition>(this.Partition)
打开App,查看更多内容
随时随地看视频慕课网APP