具有使用Webmatrix 3或类似功能的启动任务的Windows Azure网站(不使用Visual Studio)

时间:2013-07-25 16:24:15

标签: windows azure web task startup

我知道Azure网站变得简单,没有角色配置等......但我仍然在想,是否有任何方法可以在使用网站时创建启动任务? 我问,因为我想通过FTP和Webmatrix(不重新编译源代码而不使用Visual Studio)来简化现有网站的部署,然后使用 用于部署和安装附加组件的启动任务(Crystal Reports,ActiveX Dll ...) 谢谢你的回答 Mokh PS:我的问题是这个问题的复制和粘贴:Windows Azure Website with a Startup task

1 个答案:

答案 0 :(得分:1)

是的,有多种方法可以实现与Windows Azure网站中的云服务启动任务等效的功能。主要区别和限制是您将无法使用提升的权限运行这些启动任务。

这些方法利用了以下事实:在Windows Azure网站中运行的Web应用程序可以生成进程并写入磁盘。它们甚至可以导致可执行文件运行。

因此,您可以编写ASP.NET应用程序并使用Application_Start中的Global.asax方法运行将在文件系统上安装某些内容的批处理文件。正如WebsiteStartupTask示例项目中所示,您可以像这样编写一个Global.asax文件来执行任何命令:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        string WindowsDir = Environment.GetEnvironmentVariable("windir");
        string command = System.IO.Path.Combine(WindowsDir, @"System32\cmd.exe");
        string outputFilePath = Server.MapPath("~/Log.txt");
        string arguments = String.Format("/c echo Startup task executed at {0} >>\"{1}\"", System.DateTime.UtcNow.ToString("o"), outputFilePath);
        System.Diagnostics.Process.Start(command, arguments);
    }
</script>

您还可以编写一个Web服务或HTTP端点,在收到POST HTTP请求时也会这样做,因此您可以远程触发启动任务(甚至可能向其提交参数)。

在任何情况下,您在应用程序启动时可以执行的操作都将受到运行应用程序的用户的安全权限的限制。您将无法执行任何需要管理员权限的内容,但您将能够执行任何可以作为普通用户执行的内容。