2017-01-23 96 views
3

我有一个客户可执行文件需要访问共享驱动器(Azure文件)。我的客户可执行文件安装在ServiceManifest.xml中。我尝试添加一个启动“mysetup.bat”文件,该文件具有NET USE命令,用于设置与Azure文件共享的连接。但是,我收到以下模糊错误:服务结构SetupEntryPoint

Error event: SourceId='System.Hosting', Property='CodePackageActivation:Code:SetupEntryPoint'. There was an error during CodePackage activation.The service host terminated with exit code:1

有人试过这个吗?或至少有关如何获得更多的信息比超级有用的“退出代码:1”的提示?

+0

嗨,我有同样的问题,我有用的退出代码是3.您是否找到了解决方案? –

回答

0

我想这是因为它运行的系统,它不具有用户配置文件创建的驱动器映射。

+0

有关如何获取Azure文件共享的任何想法,以便我的客户可执行文件可以使用它? – emseetea

+0

在Worker角色中,我们有'启动任务',但在服务结构中似乎没有一个简单的地方。 – emseetea

+0

我想我可能找到了答案。 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-runas-security可能需要设置RunAsPolicy以允许SetupEntryPoint可执行文件安装驱动器。 – emseetea

3

SetupEntryPoint是启动启动任务的正确的地方。但是,根据您的启动任务,您可能需要在ApplicationManifest.xml中指定RunAsPolicy。

这里是我做过什么:

创建一个名为“的setup.bat”一个BAT文件,并将其添加到我的客人可执行代码的文件夹。在这个setup.bat文件中,我正在执行一个NET USE语句,将网络驱动器映射到Azure文件共享文件夹。

我加了这一点:

<SetupEntryPoint> 
    <ExeHost> 
    <Program>setup.bat</Program> 
    <Arguments></Arguments> 
    </ExeHost> 
</SetupEntryPoint> 

到ServiceManifest节点。

<Policies> 
    <RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="All" /> 
</Policies> 

到ServiceManifestImport节点...

然后添加以下

<Principals> 
    <Users> 
     <User Name="SetupAdminUser"> 
     <MemberOf> 
      <SystemGroup Name="Administrators" /> 
     </MemberOf> 
     </User> 
    </Users> 
    </Principals> 

到ApplicationManifest的DefaultServices节点之后。 Principals节点位于DefaultServices节点之后,这一点很重要。不知道为什么,但它会使应用程序无法部署到群集中。

+0

嗨,我试了这个,文档说什么,我仍然得到错误。我也尝试了一个空的setup.bat文件,它一直在说: ServiceHostProcess:MySetup.bat开始于2017 - 02 - 13T19:56:50.841058400Z进程Id 4656 for ApplicationId bc9bf792-57c6- 42d6-95b8-3350de901357,退出代码1上的节点id意外终止eec59d298de9d615a03ae3ffd119e699 错误事件:的SourceID = 'System.Hosting',属性= 'CodePackageActivation:代码:SetupEntryPoint'。 CodePackage激活期间出错。服务主机以退出码终止:1 任何想法? –

+0

查看我的代码https://github.com/markti/ServiceFabricHandbrakeGuest – emseetea

+0

感谢您分享您的代码。我尝试了它,但是当我部署到Azure时,得到了相同的结果,而不是本地。尽管有一点不同,我想在你的代码中你正在部署一个guest虚拟机exe文件,并且正在部署一个Web API。你可以看看我的代码。这是您的config xml全新的项目。字面意思是:打开VS,新项目,添加您的XML ...在此先感谢https://1drv.ms/u/s!AmWSNr4-2JqMiakLiIMoSZeLUzttJA –

1

在我来说,我解决了这个错误:“CodePackageActivation:代码:SetupEntryPoint有退出代码为终止CodePackage activation.The服务主机中的错误:1”通过移动我的设置脚本到PS1文件

和从MySetup.bat执行它

所以我结束它与我的蝙蝠和名为.ps1文件以下。

  1. 在我MySetup.bat(你的服务清单引用一个):

powershell.exe -ExecutionPolicy绕道-Command”。\ MySetup.ps1"

  1. 在我的MySetup。PS1(这里添加自己的PowerShell脚本):

的netsh的http添加urlacl URL = http://erick1.com:80/用户= “NT AUTHORITY \ NETWORK SERVICE”

如何调试:

远程桌面您的虚拟机并转到“D:\ SvcFab_App [您的服务类型名称] \ log”并检查.err和.out文件。不要忘记添加到您的服务清单..整个节会:

<SetupEntryPoint> 
    <ExeHost> 
    <Program>MySetup.bat</Program> 
    <WorkingFolder>CodePackage</WorkingFolder> 
    <ConsoleRedirection FileRetentionCount="10"/> 
    </ExeHost> 
</SetupEntryPoint> 

最后一两件事:在我来说,我曾在.bat文件一个特殊的字符,在Visual Studio中是不可见的,我的设置失败了......我只能通过读取日志(如上所述)来发现它。不要害怕日志,在这种情况下通常是一行。

谢谢