【问题标题】:Azure Web Jobs failure - ReadLine() left inAzure Web 作业失败 - ReadLine() 留在
【发布时间】:2016-09-13 05:35:43
【问题描述】:

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

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

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

更新:

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

再次感谢您! :)

附:我从Console.ReadLine()切换;到System.Threading.Thread.Sleep(); 以防止将来发生任何事故。

【问题讨论】:

  • 您能否反编译可执行文件以获取源代码并重新编译而不会出现违规行,直到您可以返回办公室?
  • 一直很好奇,有什么反编译工具的建议吗?
  • 过去,Reflector.NET 是首选,但您也许可以从 ILSpy 中获得所需的东西:ilspy.net
  • 我忘了我已经安装了 .NET Reflector 9.0!立即查看。
  • 成功了!代码有点偏离,但仍按预期工作。

标签: c# azure azure-webjobs


【解决方案1】:
public class Program
    {
        public static void Main()
        {
            Console.WriteLine("Hello World!");
            Console.ReadLine();
            Console.WriteLine("After ReadLine");
        }
    }

尝试以 echo '\n' | helloconsole.exe 运行您的 Webjob

在 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

我们使用以下逻辑来决定哪个文件是要在作业目录中运行的脚本:

  • 根据文件类型,我们首先查找名为:run.{file type extension} 的文件(例如 run.cmd 或 run.exe)。

【讨论】:

  • 哦,这是一个很好的解决方案,不需要暴力! :)
  • +1 没有尝试过,但看起来很有希望!实际上,在你们两个发布之前,我刚刚找到了自己的答案(链接在其他帖子的评论中)。感谢有关 run.cmd 部分的提示!我对此的快速而“肮脏”的解决方案是将其放在子目录中。 :)
  • 如果我的网络作业持续运行,我该怎么办......如何输入任何输入?
【解决方案2】:

尝试以下命令杀死进程:

d:\devtools\sysinternals\pskill /accepteula YourProcessName

您可以先在Kudu Console 中练习运行它。

【讨论】:

  • 感谢您的回复!实际上,我只是按照this post 中的答案找到了解决方案。工作得很好。不过我也会看看你的。
  • 改用@evilSnobu 的解决方案,这完全避免了终止进程的需要。
  • 抱歉劫持,但大卫你能看看这个吗? serverfault.com/questions/802603/… 我不确定 Azure 开发者是否在 Serverfault 上闲逛
猜你喜欢
  • 2021-11-08
  • 2015-04-13
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2015-04-11
相关资源
最近更新 更多