NServiceBus 终结点未在 Azure Service Fabric 本地群集上启动

NServiceBus endpoint is not starting on Azure Service Fabric local cluster

我在 Service Fabric 本地集群中有一个 .NetCore 无状态 WebAPI 服务 运行。

 return Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();

当我尝试启动 NServiceBus 端点时,出现此异常:

访问路径 'C:\SfDevCluster\Data_App_Node_0\AppType_App10\App.APIPkg.Code.1.0.0.diagnostics' 被拒绝。

如何解决? VS 运行 由管理员管理。

  1. 打开文件夹属性安全选项卡
  2. Select ServiceFabricAllowedUsers
  3. 添加写入权限

您遇到的问题是因为您尝试写入的文件夹不应该由您的应用程序写入。

包文件夹用于存储您的应用程序二进制文件,并且可以在节点中托管应用程序时动态重新创建。

此外,二进制文件被同一节点上的多个服务实例 运行 重复使用,因此不同实例可能会竞争使用这些文件。

您应该指示您的应用程序写入 WorkFolder,

public Stateless1(StatelessServiceContext context): base(context)
{
   string workdir = context.CodePackageActivationContext.WorkDirectory;
}

上面的代码会给你这样的路径:

'C:\SfDevCluster\Data_App_Node_0\AppType_App10\App.APIPkg.Code.1.0.0.diagnostics\work'

此文件夹是动态的,会根据您的应用程序的节点或实例发生变化运行,创建时,您的应用程序应该已经具有写入权限。

有关详细信息,请参阅:

how-do-i-get-files-into-the-work-directory-of-a-stateless-service?forum=AzureServiceFabric