我从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应用程序,还是需要实现/继承某些东西?
修改
部署应用程序时,它进入警告状态,显示以下消息:
之后不久它转换为错误状态:
答案 0 :(得分:2)
是的,您可以在Service Fabric中托管一个简单的控制台应用程序作为Guest Executable,这应该不是问题。
您看到的问题可能是因为应用程序正在尝试写入c:/temp
中的文件,默认情况下Guest Exe没有权限。尝试删除示例代码的那一部分,或将其更改为写入hello.txt
,它将最终位于您运行Guest Exe的同一文件夹中。
您应该将Service Fabric节点上的文件存储视为临时存储,而不是依赖于存储数据,因为Service Fabric可以在节点之间移动服务,作为集群维护的一部分。
中文件系统访问的更多详细信息,请参阅此答案