2017-01-23 95 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中是不可見的,我的設置失敗了......我只能通過讀取日誌(如上所述)來發現它。不要害怕日誌,在這種情況下通常是一行。

謝謝