0

FTP アカウントを使用して、バックアップの一部を別のサーバーにアップロードして保存したいと考えています。このアカウントには、攻撃者が私のバックアップを削除するのを防ぐために、読み取り権限のみ (書き込み権限はありません) があります。

そこで、完全なアクセス許可 (読み取りと書き込み) を使用してソリューションのコーディングを開始しました。これは私のコードがどのように見えるかです:(このコードは現在動作しています)

        string file = @"C:\1.html";
        FtpWebRequest ftpClient = (FtpWebRequest)FtpWebRequest.Create(new Uri(ConfigurationManager.AppSettings["FTPUrl"]) + @"/" + Path.GetFileNameWithoutExtension(file));
        ftpClient.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FtpUserName"], ConfigurationManager.AppSettings["FtpPassword"]);
        ftpClient.Method = WebRequestMethods.Ftp.UploadFile;
        ftpClient.UseBinary = true;
        ftpClient.KeepAlive = true;
        FileInfo fi = new FileInfo(file);
        ftpClient.ContentLength = fi.Length;
        byte[] buffer = new byte[4097];
        int bytes = 0;
        int total_bytes = (int)fi.Length;
        System.IO.FileStream fs = fi.OpenRead();
        System.IO.Stream rs = ftpClient.GetRequestStream();
        while (total_bytes > 0)
        {
            bytes = fs.Read(buffer, 0, buffer.Length);
            rs.Write(buffer, 0, bytes);
            total_bytes = total_bytes - bytes;
        }
        fs.Close();
        rs.Close();

しかし、読み取り権限を削除すると、機能しなくなります。問題のあるコード行は次のとおりです。

    System.IO.Stream rs = ftpClient.GetRequestStream();

エラーは次のとおりです。

System.dll で 'System.Net.WebException' 型の未処理の例外が発生しました

追加情報: リモート サーバーがエラーを返しました: (550) ファイルを利用できません (たとえば、ファイルが見つからない、アクセスできません)。

理論的には、読み取り権限なしでファイルをアップロードしても問題ないようです (FileZilla でも動作します)。実際には、それは私にとってはうまくいきません。誰かがこの場合の解決策を教えてもらえますか?

4

0 に答える 0