我已将控制台应用程序部署为Azure上的webjobs,它正在从ftp服务器上获取数据,但是当在本地运行控制台应用程序时,它运行良好,但是当将其部署到Azure上时,在连接到FTP服务器时会引发异常IO异常。
答案 0 :(得分:0)
我部署了一个Web作业,以通过FTP从kudu获取数据,它在本地工作正常,但无法像您一样在天蓝色的情况下获取数据。
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 Network的限制所致。 Webjob在其沙箱中运行,可以通过Internet访问应用程序的唯一方法是通过已经公开的HTTP (80)
和HTTPS (443)
TCP端口。
应用程序可以创建一个套接字,该套接字可以侦听来自沙箱中的连接。例如,同一应用程序中的两个进程可以通过TCP套接字相互通信;从沙箱外部传入的连接尝试(即使它们位于同一台计算机上)将失败。这是reference。
如果您还有问题,请告诉我。