我知道 Azure 网站很简单,没有角色配置等等......但我仍然想知道,在使用网站时有没有办法创建启动任务?
我问是因为我想通过 FTP 和 Webmatrix 简化现有网站的部署(不重新编译源代码并且不使用 Visual Studio),然后使用
用于部署和安装附加组件(Crystal Reports、ActiveX Dll...)的启动任务
感谢您的回答
莫克
PS:我的问题是复制并粘贴这个问题:Windows Azure Website with a Startup task
最佳答案
是的,实现与 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 请求时,它们会执行相同的操作,因此您可以远程触发启动任务(甚至可能向其提交参数)。
无论如何,您在应用程序启动时可以执行的操作将受到您的应用程序运行用户的安全权限的限制。您将无法执行任何需要管理员权限的操作,但您将能够执行任何可以以普通用户身份执行的操作。
关于使用 Webmatrix 3 或类似(不使用 Visual Studio)启动任务的 Windows Azure 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17863618/