当前位置:首页 > 开发 > 互联网 > 正文

FTP 之 550 permission denied

发表于: 2015-03-08   作者:沈邑郡   来源:转载   浏览:
ftp
摘要: FTP 之 550 permission denied(转) 做案子時﹐將WinInet.dll封裝﹐用C#調用﹐做了四個函數﹐分別是上傳﹐下載﹐刪除﹐清空文件夾。在開發環境中測試沒有任何問題﹐但拿到正式環境中卻出現"550 /c:/dh/MPF.dir/ABC"不存在的錯誤。但實際上的FTP Home 目錄是MPF.dir, 可是卻出現了/c:/dh/之類的東東。 經過排

FTP 之 550 permission denied(转)

做案子時﹐將WinInet.dll封裝﹐用C#調用﹐做了四個函數﹐分別是上傳﹐下載﹐刪除﹐清空文件夾。在開發環境中測試沒有任何問題﹐但拿到正式環境中卻出現"550 /c:/dh/MPF.dir/ABC"不存在的錯誤。但實際上的FTP Home 目錄是MPF.dir, 可是卻出現了/c:/dh/之類的東東。

經過排查﹐開發環境用的是IIS來做的FTP, 而正式環境用的是Server-U做FTP Server. 一定出在配置上﹐而且不是server的問題﹐是編程的問題。

跟蹤后﹐發現是在setCurrentDirectory發生錯誤。設斷點在這里﹐執行前發現當前目錄已經在"/c:/dh/", 原來的程式有一條指令是

ftpFunc.SetCurrentDirectory("/"); // set root folder, 因為"/c:/dh/"的確沒有權限﹐所有出錯誤﹐那為什么當前的default目錄是"/c:/dh"呢?原來server-U在配置當前用戶時有一個選項是: lock user in home directory. 如果沒有被勾選上﹐則表示當前用戶登錄成功后﹐他的home directory是物理路徑. 如果被勾上﹐則他的home directory是"/", 所以才會產生permission denied錯誤.

改正﹕在登錄的時候﹐就把當前用戶的home directory記錄下來﹐然后在那些函數設定目錄的時候調用:

ftpFunc.SetCurrentDirectory(rootPath); // set root folder就可以了

FTP 之 550 permission denied

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

推荐文章
编辑推荐
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号