首页 > 解决方案 > FTP 未通过 Azure Webjobs 连接

问题描述

我已经在 Azure 上将控制台应用程序部署为 webjobs,它从 ftp 服务器获取数据,但是当在本地运行控制台应用程序时它工作正常,但是在 Azure 上部署它时,它在连接到 FTP 服务器时抛出异常 IO Exception。

标签: azureazure-webjobs

解决方案


我部署了一个网络作业来通过 FTP 从 kudu 获取数据,它在本地运行良好,但无法像你一样在 azure 上获取数据。

public static void main(String[] args) {
    FTPClient client = new FTPClient();

    try {
        client.connect("url");
        client.login("username", "password");

        if (client.isConnected()) {
            // Obtain a list of filenames in the current working
            // directory. When no file found an empty array will
            // be returned.
            String[] names = client.listNames();
            for (String name : names) {
                System.out.println("Name = " + name);
            }

            FTPFile[] ftpFiles = client.listFiles();
            for (FTPFile ftpFile : ftpFiles) {
                // Check if FTPFile is a regular file
                if (ftpFile.getType() == FTPFile.FILE_TYPE) {
                    System.out.printf("FTPFile: %s; %s%n",
                            ftpFile.getName(),
                            FileUtils.byteCountToDisplaySize(ftpFile.getSize()));
                }
            }
        }
        client.logout();
    } `

根据我的经验,这是由于 Kudu 网络的限制。Webjob 在其沙箱中运行,通过 Internet 访问应用程序的唯一方法是通过已经公开的 HTTP(80)和 HTTPS (443)TCP 端口。

应用程序可以创建一个套接字,该套接字可以侦听沙箱内的连接。例如,同一应用程序中的两个进程可能通过 TCP 套接字相互通信;从沙盒外部传入的连接尝试,即使它们在同一台机器上,也会失败。这是参考

如果您仍有疑问,请告诉我。


推荐阅读