我有一个Azure应用服务,托管一个wordpress网站。我想编写一个控制台应用程序,它将从网站(文件存储)复制文件并将其粘贴到部署槽中。所有在线资源都讨论了用于连接到文件存储的“访问密钥”,但我在应用服务门户中看不到这样的内容。我可以使用部署凭据或Web部署凭据来访问这些文件吗?
根据你的描述,我建议你可以使用webjob文件触发器来达到你的要求。
您可以使用文件触发器来查看系统文件路径中的文件更改,您可以找到部署插槽的ftp凭据,然后使用它通过webjob的扩展包将文件表单生产文件夹上载到部署插槽。
更多细节,您可以参考以下图片和代码:
1.找到ftp凭证并设置密码
设置用户名和密码
2 ..从nuget包管理器安装Microsoft.Azure.WebJobs.Extensions并编写webjob方法。
代码如下:
注意:默认文件路径为D:/ home / data,如果您的文件位于您的网站文件夹中,则需要更改其路径,如下所示。
static void Main()
{
var config = new JobHostConfiguration();
FilesConfiguration filesConfig = new FilesConfiguration();
string home = Environment.GetEnvironmentVariable("HOME");
if (!string.IsNullOrEmpty(home))
{
filesConfig.RootPath = Path.Combine(home, "site");
}
config.UseFiles(filesConfig);
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
功能:
public static void ImportFile(
[FileTrigger(@"wwwroot\doc\{name}", "*.*", WatcherChangeTypes.Created | WatcherChangeTypes.Changed)] Stream file,
FileSystemEventArgs fileTrigger,
TextWriter log)
{
log.WriteLine(string.Format("Processed input file '{0}'!", fileTrigger.Name));
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(string.Format("ftp://yourftpurl.ftp.azurewebsites.windows.net/site/wwwroot/doc/{0}", fileTrigger.Name));
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(@"username", "password");
Stream requestStream = request.GetRequestStream();
file.CopyTo(requestStream);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
log.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
}
结果:
如果将文件添加到生产的doc文件夹,则Web作业会将其复制到deploymeny_solt的doc文件夹。
您可以使用“Azure Site Replicator”扩展。一个插槽就像另一个azure app服务,所以它应该在插槽之间复制就好了。
在要将所有内容复制到的部署槽中,单击“获取发布配置文件”,从概述选项卡下载“发布设置”。
在您的应用服务生产槽中,转到Extensions并添加Site Replicator扩展。安装完成后,单击它并单击“浏览”。这将打开一个包含配置选项的新窗口。
在配置窗口中,上载“发布设置”文件。