2016-11-14 54 views
2

我试图部署.NET Core控制台应用程序作为Azure WebJob。所有文件等被复制到正确的目录,但我的控制台应用程序的输出是一个.dll,所以它需要dotnet.exe开始。在Azure WebJob中缺少dotnet.exe

我已经用单个命令添加了一个run.cmd文件:dotnet QbiSync.dll。 但输出如下,它似乎无法找到dotnet.exe:

[11/14/2016 13:15:29 > 4741da: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost' 
[11/14/2016 13:15:29 > 4741da: SYS INFO] Status changed to Running 
[11/14/2016 13:15:29 > 4741da: INFO] 
[11/14/2016 13:15:29 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\x4jkoxww.vy4>dotnet QbiSync.dll 
[11/14/2016 13:15:29 > 4741da: ERR ] 'dotnet' is not recognized as an internal or external command, 
[11/14/2016 13:15:29 > 4741da: ERR ] operable program or batch file. 
[11/14/2016 13:15:29 > 4741da: SYS ERR ] Job failed due to exit code 1 
[11/14/2016 13:15:29 > 4741da: SYS INFO] Process went down, waiting for 60 seconds 

开放使用捻或在Azure门户网站和呼叫dotnet.exe都工作正常,一个控制台窗口。我也试着像硬链接:

  • "D:\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll
  • "\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll

但他们也给这样的错误:

[11/14/2016 13:59:29 > 4741da: ERR ] The filename, directory name, or volume label syntax is incorrect. 
[11/14/2016 13:59:29 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\hzlkzj1q.0jt>"D:\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll 

即使dotnet.exe实际上是设在那里。

更新

可能相关的是,源在脚本的开头使用@echo off。但这也是一个似乎并未被接受的“命令”。

[11/14/2016 12:37:57 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\3n44nly1.ucq>@echo off 
[11/14/2016 12:37:57 > 4741da: INFO] 
[11/14/2016 12:37:57 > 4741da: ERR ] '@echo' is not recognized as an internal or external command, 

来源用于:

+0

如果您尝试从Kudu Console手动运行run.cmd,会发生什么情况? –

+0

作为一个快速测试,我尝试用run.cmd创建一个连续的WebJob,它只有'dotnet.exe QbiSync.dll'(没有dll)。 'D:\ local \ Temp \ jobs \ continuous \ DotNetContJob \ tgq45gw1.kb2 \ QbiSync.dll',这意味着它成功启动了dotnet.exe并且只是因为dll失败而失败不在这里。你可以尝试这个相同的测试来隔离吗? –

+0

@DavidEbbo使用'D:\ local \ Temp \ jobs \ continuous \ QbiSync \ jf0yv53s.i3c> run.cmd',使用kudu控制台成功启动并获得预期输出。我会在几分钟内检查你的第二条评论。 – Raymen

回答

7

的问题是,你的run.cmd使用UTF-8 BOM(按顺序标记),在某些情况下会导致脚本发动机行为不端。修复是没有BOM。

Wiki上有这样的提示(https://github.com/projectkudu/kudu/wiki/Web-Jobs),但是很容易错过。

+0

我正在尝试从HTTP客户端运行Web作业。该文件是一个ZIP文件。并包含一个java类和bat文件来运行该java类。当我从POSTMAN那里运行的时候,这样可以运行。但是,当我使用HTTP客户端,我总是得到以下错误:'--- i-NPsGbTVUpaP0CeJxMQVrHoDHvaxo3'不被识别为内部或外部命令“ - 请帮助 – Jagaran

+0

@Jagaran如果它只发生在某些客户端,它可能是无关的。请提出一个新问题 –

+0

没有任何HTTP客户端在java中使用,它是一样的。它在CURL中工作或从Web控制台加载。我的示例代码如下 – Jagaran