我有一个要发布到应用服务的 Azure WebJob。我遇到的问题是我想以 x86 平台为目标,但是当我发布 WebJob 并附加到应用服务时,它总是列为 x64。
我将所有解决方案配置的平台目标设置为 x86。只有一个解决方案平台。我什RuntimeIdentifier
至将发布 scipt 设置为“win7-x86”。我不知道我可能会错过什么。
应用程序服务在应用程序设置中设置为在 32 位平台上运行。
我有一个要发布到应用服务的 Azure WebJob。我遇到的问题是我想以 x86 平台为目标,但是当我发布 WebJob 并附加到应用服务时,它总是列为 x64。
我将所有解决方案配置的平台目标设置为 x86。只有一个解决方案平台。我什RuntimeIdentifier
至将发布 scipt 设置为“win7-x86”。我不知道我可能会错过什么。
应用程序服务在应用程序设置中设置为在 32 位平台上运行。
AFAIK,您的 Web 应用程序的默认工作进程是32-bit
. 为了检查您的网络应用程序的当前环境,您可以利用KUDU。
对于 32 位平台:
对于 64 位平台:
您可以访问的详细信息https://{your-app-name}.scm.azurewebsites.net/Env.cshtml
。
对于您的网络作业,您可以使用流程资源管理器,如下所示:
对于 32 位平台:
对于 64 位平台:
一般来说,我建议您删除现有的 webjob 并重新部署它,然后使用 kudu 检查环境以缩小此问题。
没有直接的方法可以从 Azure 门户或 KUDU 控制台找出 Webjob 进程位数。要确定它,您需要从 KUDU 手动收集内存转储,此博客涵盖它http://jsandersblog.azurewebsites.net/2017/02/02/how-to-get-a-full-memory-dump -在天蓝色应用服务/
为 Webjob 进程收集内存转储后,您需要在 Windbg 中打开它并运行以下命令:
这是检查进程位数的命令:
0:000> !peb
NUMBER_OF_PROCESSORS=4
PROCESSOR_ARCHITECTURE=x86
WEBSITE_COMPUTE_MODE=Dedicated
WEBSITE_SKU=PremiumV2
0:000> .effmach
Effective machine: x86 compatible (x86)
或者,您可以在 Visual Studio 中打开(只需拖放)转储以查看以下信息:
因此,得出的结论是 Webjob 以 x86 位运行。
在我的情况下,我想运行它 x64 位,并且这个 WebJob 是通过 VSTS 构建的管道部署的,并且缺少 Platform 参数。将其设置为 x64 后,Webjob 现在可以成功运行 x64 位。