即使问这个问题,我也想知道如此简单的事情对我来说如此困难。我想要做的就是按计划自动停止和启动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”。
答案 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/