2017-11-03 6 views
1

からしたFtpWebRequestでFTPサーバーに接続できないではなく、作品は紺碧にアプリを公開した後、それはここでは、私は地元のasp.netアプリで紺碧のftpサーバにファイルをアップロードすることができAzureのアプリ

に記録されていない私を与える私であることftpサーバに接続するが、それは

private void ExecuteRequest(string url, string action, string fileToUpload = null) 
    { 
     var request = (FtpWebRequest)WebRequest.Create(url); 
     request.Method = action; 
     request.UseBinary = true; 
     request.UsePassive = true; 
     request.KeepAlive = true; 
     request.Credentials = new NetworkCredential(_settings.Username, _settings.Password); 
     WebResponse response = null; 
     try 
     { 
      if (action == WebRequestMethods.Ftp.UploadFile) 
      { 
       StreamReader sourceStream = new StreamReader(fileToUpload); 
       byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
       sourceStream.Close(); 
       request.ContentLength = fileContents.Length; 

       Stream requestStream = request.GetRequestStream(); 
       requestStream.Write(fileContents, 0, fileContents.Length); 
       requestStream.Close(); 
      } 
      response = request.GetResponse(); 
     } 
     catch (WebException exp) 
     { 
      var ftpResponse = (FtpWebResponse)exp.Response; 
      if (request.Method== WebRequestMethods.Ftp.MakeDirectory && ftpResponse.StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable) 
       DiosException.Throw(exp); 
     } 
     finally 
     { 
      if (response != null) 
       response.Close(); 
     } 
    } 
+1

ローカルおよびAzureの両方から私たちに[ 'FtpWebRequest'ログファイル](https://stackoverflow.com/q/9664650/850848)を表示します。 –

+0

私はそれを得る方法がわかりません私は紺碧のセキュリティに関連する何かをしなければならないと思います – malballah

+0

私のコメントのリンクに従っていますか? –

答えて

0

を動作しませんAzureのために展開されたときには、AzureのWebAppの上で動作するはずです、私は私の側にあなたのコードをテストコードは、それが正常に動作します。以下は私のテストコードです。あなたのケースでは、remote debug the WebAppで詳細なエラー情報を得ることができます。 Azure WebAppについてもっと知りたい場合は、WebApp Sanboxを参照してください。

var fileName = Guid.NewGuid().ToString() + ".txt"; 
    var url = $"ftp://xxxxx.ftp.azurewebsites.windows.net/site/wwwroot/{fileName}"; 
    var action = WebRequestMethods.Ftp.UploadFile; 
    var request = (FtpWebRequest)WebRequest.Create(url); 
    var fileToUpload = @"D:\home\site\wwwroot\tom.txt"; // make sure the file is existing and file can be accessed 
    var userName = @"xxxxxx"; 
    var password = "xxxxxxx"; 
    request.Method = action; 
    request.UseBinary = true; 
    request.UsePassive = true; 
    request.KeepAlive = true; 
    request.Credentials = new NetworkCredential(userName, password); 
    WebResponse response = null; 
    try 
    { 
     if (action == WebRequestMethods.Ftp.UploadFile) 
     { 
      var sourceStream = new StreamReader(fileToUpload); 
      byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
      sourceStream.Close(); 
      request.ContentLength = fileContents.Length; 
      var requestStream = request.GetRequestStream(); 
      requestStream.Write(fileContents, 0, fileContents.Length); 
      requestStream.Close(); 
     } 
      response = request.GetResponse(); 
    } 
    catch (WebException exp) 
    { 
      var ftpResponse = (FtpWebResponse)exp.Response; 
      //if (request.Method == WebRequestMethods.Ftp.MakeDirectory && ftpResponse.StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable) 
      // DiosException.Throw(exp); 
    } 
    finally 
    { 
      response?.Close(); 
    } 

enter image description here

関連する問題