我有一个Azure WebJob,我将其发布到App Service。我遇到的问题是我想要定位x86平台但是当我发布WebJob并附加到App Service时,它总是被列为x64。
我将所有解决方案配置的平台目标设置为x86。只有一个解决方案平台。我甚至在发布scipt中将RuntimeIdentifier
设置为“win7-x86”。我不知道我可能错过了什么。
App Service设置为在“应用程序设置”中的32位平台上运行。
答案 0 :(得分:1)
AFAIK,您的网络应用的默认工作流程为32-bit
。要检查您的网络应用的当前环境,您可以使用KUDU。
对于32位平台:
对于平台64位:
您可以访问https://{your-app-name}.scm.azurewebsites.net/Env.cshtml
的详细信息。
对于您的webjob,您可以按如下方式使用Process explorer:
对于32位平台:
对于平台64位:
一般情况下,我建议您删除现有的webjob并重新部署,然后使用kudu检查环境以缩小此问题。
答案 1 :(得分:0)
没有直接的方法可以从 Azure 门户或 KUDU 控制台找出 Webjob 进程的位数。要确定它,您需要从 KUDU 手动收集内存转储,本博客对此进行了介绍 http://jsandersblog.azurewebsites.net/2017/02/02/how-to-get-a-full-memory-dump-in-azure-app-services/
为 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 位。