在 Web 和 Worker 角色中,您确实需要提供角色入口点或程序入口点。而且我知道在自定义工作角色中没有工作角色 DLL,但是您可以使用 PHP.EXE 或 Java.exe 或 Nodejs.exe 作为 ProgramEntryPoint。
解决此问题的方法是将 ProgramEntryPoint 与 Windows Azure Worker Role 结合使用。我将为您提供一个如下示例,说明如何使用它,以便您可以在 Windows Azure PHP 应用程序中使用它:
因此,如果您的工作角色名称为“TestWorker”并且文件夹 TestWorker 包含您的 PHP.EXE 以及其他文件,并且您的应用程序文件夹如下所示:
现在您还可以编辑/添加您的 ServiceDefinition.cscfg 以包含正确的 WorkerRole 设置以及 ProgramEntryPoint,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WorkerRoleApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
<WorkerRole name="TestWorker" vmsize="Small">
<Runtime executionContext="limited">
<EntryPoint>
<ProgramEntryPoint commandLine="php.exe" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
<Endpoints>
<InputEndpoint name="PhpHttpIn" protocol="http" port="80" />
</Endpoints>
</WorkerRole>
</ServiceDefinition>
最后,您可以使用如下 CSPACK 命令来构建您的包,然后在 Compute Emulator 中进行本地测试:
cspack ServiceDefinition.csdef /role:TestWorker;TestWorker /copyOnly
/out:WorkerRoleApp.csx /generateConfigurationFile:ServiceConfiguration.cscfg
最后结果如下所示: