我可以按计划自动启动和停止天蓝色网站吗?

时间:2014-08-03 00:50:56

标签: azure azure-web-sites azure-webjobs

即使问这个问题,我也想知道如此简单的事情对我来说如此困难。我想要做的就是按计划自动停止和启动Azure WebSite。起初,我查看了WebJobs,并创建了一个powershell脚本,可以阻止使用stop-azurewebsite命令行开关的WebSite:

stop-azurewebsite [my site]

然后我创建了一个.cmd文件来使用powershell.exe来调用它来执行powershell文件

PowerShell.exe -ExecutionPolicy RemoteSigned -File stopit.ps1

我创建了一个WebJob来运行powershell命令来停止该站点,但它错误地显示了一条消息:

stop-azurewebsite : The term 'stop-azurewebsite' is not recognized as the name 
of a cmdlet, function, script file, or operable program. Check the spelling of 
the name, or if a path was included, verify that the path is correct and try 
again.

所以,我想我会去REST API路线。我使用fiddler创建了一个post请求,并使用适当的管理证书来调用:

https://management.core.windows.net/[my subscription id]/services/WebSpaces/[webspace]/sites/[website name]/stop

原来,没有'停止'命令。有'重启',但在这种情况下显然没有用。那么,所有这一切,在一个特定的时间表上自动停止和随后(但后来)启动Azure WebSite的合理方法是什么?

更新:

我已经找到了如何发出http请求以使用PUT停止网站

https://management.core.windows.net/[my subscription id]/services/WebSpaces/[webspace]/sites/[website name]的正文为{"State":"Stopped"},但我仍然没有明显的方法在WebJob中对此网址进行“PUT”。

3 个答案:

答案 0 :(得分:6)

使用Azure自动化,创建一个Runbook并添加以下代码以获取所有“正在运行”的网站/网络应用并关闭它们。

static void Main(string[] args)
    {
        Console.WriteLine("Id main thread is: {0}", Thread.CurrentThread.ManagedThreadId);
        TestAsyncAwaitMethods();
        Console.WriteLine("Press any key to exit...");
        Console.ReadLine();
    }

    public async static void TestAsyncAwaitMethods()
    {
        Console.WriteLine("Id thread (void - 0) is: {0}", Thread.CurrentThread.ManagedThreadId);
        var _value = await LongRunningMethod();
        Console.WriteLine("Id thread (void - 1) is: {0}", Thread.CurrentThread.ManagedThreadId);
    }

    public static async Task<int> LongRunningMethod()
    {
        Console.WriteLine("Id thread (int) is: {0}", Thread.CurrentThread.ManagedThreadId);
        Console.WriteLine("Starting Long Running method...");
        await Task.Delay(1000);
        Console.WriteLine("End Long Running method...");
        return 1;
    }

发布Runbook,您应该能够在Azure门户中直接安排它。确保您的自动用户已通过身份验证,并在回溯中选择了您的订阅,并且应该没有任何问题。

同样,对于启动所有网站/网络应用程序,只需将“正在运行”更改为“已停止”并将“停止 - Azure网站”更改为“启动 - Azure网站”。

答案 1 :(得分:0)

查看Azure自动化。它允许您按计划运行Powershell脚本,这是一种更简单的方法来运行启动/停止/修改站点的自动化脚本。

答案 2 :(得分:0)

现在使用Azure Scheduler处理日程安排更加容易,尤其是在这种情况下。只需使用预定作业进行API调用即可停止网站。看看https://azure.microsoft.com/en-us/services/scheduler/