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

标签 c# azure azure-webjobs

因此,我创建了一个 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/

相关文章:

c# - :base() in a constructor的使用

c# - 检测正在打印的页面百分比(页面覆盖率)

performance - 多个 VM 在 Azure 中使用相同的存储帐户

azure - 资源已锁定 由于资源或其父级上的读锁定而无法访问数据平面

azure - 如何确保任一时间只有一个 Azure Web 作业实例在运行

c# - 在 C# 中实现多线程(代码审查)

c# - 无法从表单中的工具箱添加任何控件

azure - 将 Windows 计划任务或 Windows 服务迁移到 Azure Web 作业

Azure DevOps - Octopus 的打包应用程序 : System. IO.IOException:参数不正确 *

Azure Webjobs 和 Bitbucket 部署