使用New-AzureWebsiteJob部署.NET Core Azure WebJob报错求助
解决New-AzureWebsiteJob部署.NET Core WebJob时的"No runnable script file"错误
我刚好碰到过类似的问题,给你捋捋怎么解决:
错误根源
New-AzureWebsiteJob这个命令默认会找直接可执行的文件(比如.exe、.ps1、.bat这类),但.NET Core 2.0的WebJob项目编译后只有.dll,没有传统的可执行文件,所以命令找不到能直接启动的入口,就报了这个错。
解决方案:添加启动脚本+正确打包部署
1. 创建启动脚本
在你的WebJob项目根目录下新建一个run.cmd文件,内容就是用dotnet命令来启动你的WebJob DLL:
dotnet YourWebJobAssemblyName.dll
把YourWebJobAssemblyName换成你实际的项目编译后的DLL名称(就是和项目同名的那个dll)。
如果偏好PowerShell脚本,也可以建run.ps1,内容是:
dotnet YourWebJobAssemblyName.dll
2. 打包WebJob文件
把以下所有文件打包成一个ZIP包:
- 你的WebJob项目编译生成的所有
.dll文件(包括依赖的NuGet包dll) - 生成的
.deps.json、.runtimeconfig.json文件(这俩很重要,dotnet运行时需要它们) - 刚才创建的
run.cmd(或run.ps1)
⚠️ 注意:ZIP包的根目录要直接包含这些文件,不能把它们放在子文件夹里,否则Azure找不到启动脚本。
3. 执行PowerShell命令部署
用New-AzureWebsiteJob命令时,通过-RunCommand参数指定你的启动脚本,示例如下:
# 连续运行的WebJob New-AzureWebsiteJob -Name "YourAzureWebAppName" -JobName "YourTestSuiteWebJob" -JobType Continuous -ZipPath "C:\path\to\your\webjob.zip" -RunCommand "run.cmd" # 触发式WebJob New-AzureWebsiteJob -Name "YourAzureWebAppName" -JobName "YourTestSuiteWebJob" -JobType Triggered -ZipPath "C:\path\to\your\webjob.zip" -RunCommand "run.cmd"
替换YourAzureWebAppName和YourTestSuiteWebJob为你实际的Web应用名称和WebJob名称。
额外注意点
- 确保你的Azure WebApp配置的.NET Core版本和项目的2.0版本匹配,可以在Azure门户的WebApp“配置”->“通用设置”里检查运行时版本。
- 如果是连续运行的WebJob,要确保你的WebJob代码里有持续运行的逻辑(比如监听队列或者用
Host.RunAsync()),否则会被Azure认为启动失败。
内容的提问来源于stack exchange,提问作者PhilG
相关产品推荐
相关产品推荐

