Azure service fabric 在服务结构中托管控制台应用程序

Azure service fabric 在服务结构中托管控制台应用程序,azure-service-fabric,Azure Service Fabric,我从服务面料开始。我创建了一个非常简单的控制台应用程序,它运行以下代码: class Program { static void Main(string[] args) { Console.WriteLine("Hello world!"); File.AppendAllText("c:\\temp\\hello.txt", "Hello world!" + DateTime.Now.ToString() + "\r\n"); Co

我从服务面料开始。我创建了一个非常简单的控制台应用程序,它运行以下代码:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello world!");
        File.AppendAllText("c:\\temp\\hello.txt", "Hello world!" + DateTime.Now.ToString() + "\r\n");
        Console.ReadLine();
    }
}
然后,我使用VisualStudio创建一个来宾可执行项目,并将其指向exe应用程序。它安装在Service Fabric中,我可以看到文件已创建,但Service Fabric会抛出一个错误:

错误事件:SourceId='System.FM',Property='State'。 分区低于目标副本或实例计数。 结构:/Test3/Test3服务-1 5ef5a0eb-5621-4821-95cb-4c1920ab7f0c (显示0个副本中的0个。可用副本总数:0。)

这种方法正确吗?我是否可以在ServiceFabric中托管exe应用程序,或者我是否需要实现/继承某些东西

编辑

部署应用程序时,它进入警告状态,显示以下消息:

不久之后,它将转换为错误状态:


是的,您可以在ServiceFabric中作为来宾可执行文件托管一个简单的控制台应用程序,这应该不是问题

您看到的问题可能是因为应用程序正在尝试写入
c:/temp
中的文件,默认情况下,您的Guest Exe没有权限。尝试删除示例代码的该部分,或将其更改为写入
hello.txt
,它将最终位于运行Guest Exe的同一文件夹中

您应将服务存储节点上的文件存储视为临时性的,而不依赖于存储数据,因为服务可以在服务节点之间作为集群维护的一部分在节点之间移动。


有关SF中文件系统访问的更多详细信息,请参见此答案。我可以看到正在写入的文件。控制台应用程序正在运行,但服务结构将其标记为错误。如果我创建一个无状态的service fabric应用程序,它就可以工作,但是我尝试按原样托管控制台,因此我不必将应用程序移植到service fabric应用程序。我找不到有关问题可能是什么的信息。尝试运行服务时,服务结构显示的错误是什么?我已编辑了该问题并添加了获得的异常。错误代码映射到状态\u访问\u冲突(ntstatus.h)或错误\u访问\u拒绝(winerror.h为0x5)。两者似乎都表明客人出了问题,导致了崩溃。由于它只是一个客户机,如果您在同一台机器上通过调试器手动启动它会发生什么?