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

Posted

技术标签:

【中文标题】NServiceBus 终结点未在 Azure Service Fabric 本地群集上启动【英文标题】:NServiceBus endpoint is not starting on Azure Service Fabric local cluster 【发布时间】:2018-12-31 15:46:46 【问题描述】:

我有一个在 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】:

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

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

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

您应该指示您的应用程序写入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

【讨论】:

【参考方案2】:
    打开文件夹属性“安全”选项卡 选择 ServiceFabricAllowedUsers 添加写权限

【讨论】:

以上是关于NServiceBus 终结点未在 Azure Service Fabric 本地群集上启动的主要内容,如果未能解决你的问题,请参考以下文章

NServiceBus UseTransport 在升级到 .NET 6 后不起作用

NServiceBus SAGA 消息状态驱动

Azure Functions 未在本地创建 Azure 表列

未在 Azure 中创建 Spring Boot 会话

Spring Boot flash 属性未在 Azure 上发送

Swagger UI 未在 azure .net 核心中生成,但在本地工作