Azure应用服务访问文件存储以使用webjob复制内容

问题描述 投票:0回答:2

我有一个Azure应用服务,托管一个wordpress网站。我想编写一个控制台应用程序,它将从网站(文件存储)复制文件并将其粘贴到部署槽中。所有在线资源都讨论了用于连接到文件存储的“访问密钥”,但我在应用服务门户中看不到这样的内容。我可以使用部署凭据或Web部署凭据来访问这些文件吗?

azure azure-webjobs azure-web-app-service
2个回答
3
投票

根据你的描述,我建议你可以使用webjob文件触发器来达到你的要求。

链接:webjob-extension

您可以使用文件触发器来查看系统文件路径中的文件更改,您可以找到部署插槽的ftp凭据,然后使用它通过webjob的扩展包将文件表单生产文件夹上载到部署插槽。

更多细节,您可以参考以下图片和代码:

1.找到ftp凭证并设置密码

enter image description here

设置用户名和密码

enter image description here

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文件夹。

enter image description here


0
投票

您可以使用“Azure Site Replicator”扩展。一个插槽就像另一个azure app服务,所以它应该在插槽之间复制就好了。

在要将所有内容复制到的部署槽中,单击“获取发布配置文件”,从概述选项卡下载“发布设置”。

在您的应用服务生产槽中,转到Extensions并添加Site Replicator扩展。安装完成后,单击它并单击“浏览”。这将打开一个包含配置选项的新窗口。

在配置窗口中,上载“发布设置”文件。

© www.soinside.com 2019 - 2024. All rights reserved.