在Service Fabric中托管控制台应用程序

时间:2017-02-14 18:59:36

标签: azure-service-fabric

我从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");
        Console.ReadLine();
    }
}

然后,我使用Visual Studio创建一个guest虚拟机可执行项目,并将其指向exe应用程序。它安装在Service Fabric中,我可以看到该文件已创建,但随后服务结构抛出错误:

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

这种做法是否正确?我可以在Service Fabric中托管exe应用程序,还是需要实现/继承某些东西?

修改

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

Warning message

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

Error message

1 个答案:

答案 0 :(得分:2)

是的,您可以在Service Fabric中托管一个简单的控制台应用程序作为Guest Executable,这应该不是问题。

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

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

有关SF https://stackoverflow.com/a/37966158/1062217

中文件系统访问的更多详细信息,请参阅此答案