服务结构错误:“服务不存在”

时间:2019-06-13 13:33:09

标签: c# azure-service-fabric

我收到错误FabricServiceNotFoundException: Service does not exist.,但我不知道为什么。我正在创建的服务名称正是在群集中部署的服务名称。

这是我创建服务的代码:

return ServiceProxy.Create<ICheckoutService>(
                new Uri("fabric:/ECommerce/ECommerce.CheckoutService"),
                new ServicePartitionKey(0));

这是资源管理器视图。服务名称与我的代码匹配。我正在与其他服务一起正常工作。

enter image description here

我尝试了完全重启,但是出现了相同的错误:

  1. 从集群中删除的应用程序
  2. 集群中未配置的类型
  3. 重新启动集群
  4. 重新启动Visual Studio
  5. 重建和部署应用程序

更新

经过测试,我发现错误的发生取决于我通过API方法调用服务的顺序。

如果我部署应用程序并调用方法checkoutget basket,它们会给出“找不到服务”错误。

但是,如果我先调用执行一些更改(POST)的其他方法,那么它就起作用了……很奇怪吧?这是我的代码库,可帮助您查看代码。

https://github.com/epomatti/azure-servicefabric-productcatalog

enter image description here

1 个答案:

答案 0 :(得分:0)

借助@ maf748,我为所有CLR异常打开了“抛出时中断”配置,我发现实际的异常不是“服务不存在”。

enter image description here

就我而言,我为Actor服务保留了以下自动生成的方法,该方法将我的状态设置为错误状态,但后来又失败了我自己的代码。

我要做的就是从我的方法中删除Visual Studio创建的该方法,并且该方法可以正常工作。

    /// <summary>
    /// This method is called whenever an actor is activated.
    /// An actor is activated the first time any of its methods are invoked.
    /// </summary>
    protected override Task OnActivateAsync()
    {
        ActorEventSource.Current.ActorMessage(this, "Actor activated.");

        // The StateManager is this actor's private state store.
        // Data stored in the StateManager will be replicated for high-availability for actors that use volatile or persisted state storage.
        // Any serializable object can be saved in the StateManager.
        // For more information, see https://aka.ms/servicefabricactorsstateserialization

        return this.StateManager.TryAddStateAsync("count", 0);
    }