因此,我创建了一个 Azure Web 作业,每 15 分钟执行一次特定任务。它运行一个 C# 控制台应用程序。问题是,在我上次上传程序时,我留下了 Console.ReadLine();
参数,导致程序永远无法完成(当然用于本地调试)并且网络作业失败再也不会跑了。如果我有源代码,这个问题显然可以很快解决,但源代码在我的办公室,我忘了将其上传到我的云存储。直到本周晚些时候我才能访问它。
所以我正在寻找快速解决方案。我可以轻松下载上次上传的.exe程序。所以现在我想的是先运行另一个程序来调用我的主程序,然后在一段时间后关闭它。我尝试了一个简单的 .bat 脚本,该脚本能够成功打开该程序,但由于访问被拒绝错误(在本地工作),它无法关闭/终止该进程。还有其他适用于网络工作环境的快速建议吗?
显然,如果您几天后在这里看到这个,我可能已经对问题根源的源代码进行了更正,但其他人可能也会感兴趣。 :)
更新:
谢谢大家!这些解决方案中的每一个都帮助我让我的网络作业按预期运行。使用 Reflector 进行反编译特别有用,这样我就可以像预期的那样将这个项目添加到云中。但是,按照 @evilSnobu 建议使用 run.cmd 是按照我的问题中的要求应用解决方法的最简单方法。
再次感谢您! :)
附注我从Console.ReadLine()切换过来;到 System.Threading.Thread.Sleep();
以防止将来发生任何事故。
最佳答案
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
Console.ReadLine();
Console.WriteLine("After ReadLine");
}
}
尝试将您的 Webjob 运行为 echo '\n' | helloconsole.exe
在 Kudu 中测试:
D:\home\tmp>echo '\n' | helloconsole.exe
Hello World!
After ReadLine
D:\home\tmp>echo '\n' | helloconsole.exe
Hello World!
After ReadLine
..似乎成功了。
如果您将其放入 run.cmd
中,它将优先于您的 .exe
二进制文件。
https://github.com/projectkudu/kudu/wiki/Web-jobs
We use the following logic to decide which file is the script to run within the job's directory:
- Per file type we look first for a file named:
run.{file type extension}
(for example run.cmd or run.exe).
关于c# - Azure Web 作业失败 - ReadLine() 留在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456893/