Azure Web 作业失败 - ReadLine() 留在

Azure Web Jobs failure - ReadLine() left in

所以我创建了一个 Azure Web 作业,它每 15 分钟执行一次特定任务。它 运行 是一个 C# 控制台应用程序。问题是,在我上次上传我的程序时,我留下了我的 Console.ReadLine(); 参数,导致程序永远无法完成(当然用于本地调试)并且网络作业失败并且再也不会 运行 .如果我有源代码,这显然可以很快修复,但源代码在我的办公室,我忘了上传到我的云存储。本周晚些时候我才能访问它。

所以我正在寻找快速修复方法。我可以轻松下载上次上传的 .exe 程序。所以现在我想的是 运行 另一个程序首先调用我的主程序,然后在一段时间后关闭它。我尝试了一个简单的 .bat 脚本,该脚本能够成功打开该程序,但由于访问被拒绝错误(在本地工作),它无法 close/kill 该过程。还有其他适用于网络工作环境的快速建议吗?

显然,如果您几天后在这里看到这个,我可能已经在问题的根源上对源代码进行了更正,但其他人可能也会感兴趣。 :)

更新:

谢谢大家!这些解决方案中的每一个都帮助我 运行 按预期完成了网络工作。使用 Reflector 的反编译特别有用,因此我可以将这个项目添加到云中,就像它想象的那样。但是,按照@evilSnobu 的建议使用 run.cmd 是按照我的问题要求应用解决方法的最简单方法。

再次感谢! :)

P.S。我是从 Console.ReadLine() 切换过来的; System.Threading.Thread.Sleep(); 以防止将来发生任何事故。

尝试使用以下命令终止进程:

d:\devtools\sysinternals\pskill /accepteula YourProcessName

你可以先在Kudu Console练习运行这个。

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).