azure - FTP 未通过 Azure Webjobs 连接
问题描述
我已经在 Azure 上将控制台应用程序部署为 webjobs,它从 ftp 服务器获取数据,但是当在本地运行控制台应用程序时它工作正常,但是在 Azure 上部署它时,它在连接到 FTP 服务器时抛出异常 IO Exception。
解决方案
我部署了一个网络作业来通过 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 套接字相互通信;从沙盒外部传入的连接尝试,即使它们在同一台机器上,也会失败。这是参考。
如果您仍有疑问,请告诉我。
推荐阅读
- c# - 将值类型的“列表”传递给期望引用类型的“IEnumerable”的方法
- reactjs - 无法解析模块“react-native-screens”(ESLint)的路径
- c# - 如何在 .Net 示例代码中创建安全的 RPC 通信?
- angular - Angular 9,ngx-datatable 在鼠标悬停时显示按钮
- java - 如何遍历数组以查找参数是否与数组中的元素匹配?
- c# - 设置聚合根子节点的属性
- python - Tweepy - 使用 .usertimeline 排除转推
- java - 构建中止:没有这样的包'@antlr4_tool//jar'
- sql - 如何处理在 SQL 中返回多个表(结果集)的存储过程
- python - 使用python计算一个人在香港需要缴纳多少税