我有由使用WebJobs SDK編譯的可執行的連續WebJob(換句話說,運行在Main()
host.RunAndBlock()
),並且具有在Functions
類命名ProcessQueueMessage()
一個簡單的方法。這完全是樣板。天青WebJob bat文件立即終止
問題是我需要在包中包含一個額外的可執行文件,其文件名將按字母順序排列在主可執行文件之前。我將編譯爲WebJob1.exe,但我需要在同一個部署目錄中具有名爲MyOtherExecutable.exe的內容。根據WebJobs documentation,這意味着MyOtherExecutable.exe將成爲WebJob的主要可執行文件; 它將被調用,而不是WebJob1.exe它。
我意識到有文件記載的方法來解決這個問題。我可以手動更改文件名並強制我的WebJob編譯成像111.exe這樣的名稱,但這看起來像是一個可怕的黑客攻擊。另一種我認爲是優選和更優雅的方法是用一行代碼包含一個.bat文件:start WebJob1.exe
。不幸的是,當我這樣做,WebJob啓動並立即停止,永遠,你可以看到:
[12/14/2015 07:05:55 > fed86c: SYS INFO] Run script 'run.bat' with script host - 'WindowsScriptHost'
[12/14/2015 07:05:55 > fed86c: SYS INFO] Status changed to Running
[12/14/2015 07:05:55 > fed86c: INFO] D:\local\Temp\jobs\continuous\WebJob1\irfufwim.i5t>start WebJob1.exe
[12/14/2015 07:06:06 > fed86c: SYS INFO] Status changed to Success
[12/14/2015 07:06:07 > fed86c: SYS INFO] Process went down, waiting for 60 seconds
[12/14/2015 07:06:07 > fed86c: SYS INFO] Status changed to PendingRestart
(repeat)
這不是我所期待的行爲。我想到.bat文件會運行我的可執行文件(它永遠不會從內部終止)並保持打開狀態,直到我手動結束它。
它也沒有提供這個非常漂亮的插頭插入時,我排隊的消息,並刪除了所有分散注意力的可執行文件,我看到了WebJob /從WebJob的部署目錄的腳本:
[12/14/2015 07:18:22 > fed86c: SYS INFO] Status changed to Starting
[12/14/2015 07:18:25 > fed86c: SYS INFO] Run script 'WebJob1.exe' with script host - 'WindowsScriptHost'
[12/14/2015 07:18:25 > fed86c: SYS INFO] Status changed to Running
[12/14/2015 07:18:26 > fed86c: INFO] Found the following functions:
[12/14/2015 07:18:26 > fed86c: INFO] WebJob1.Functions.ProcessQueueMessage
[12/14/2015 07:18:26 > fed86c: INFO] Job host started
那一部分,它裏面列出它發現的功能告訴我,所有事情都應該溝通。它看起來是官方。我擔心的是,即使我想讓一個.bat文件工作,以便我可以清楚地指定要運行的可執行文件的名稱,但服務器將「停在那裏」,並且不會將適當的鉤子放入我的函數中,如果這就說得通了。我不知道宿主機制是否足夠聰明,知道他們已經從一個愚蠢的.bat文件反彈到真正的可執行文件。
短版我的主要問題:如果start WebJob1.exe
是不是應該運行連續WebJobs SDK可執行.bat文件正確的語法是什麼?