2017-11-03 5 views
1

verbinde ich Dateien in azur ftp-Server mit lokal asp.net App hochladen, aber die nicht funktioniert, nachdem die App in azur veröffentlichte es mir nicht angemeldet gibtkann nicht auf FTP-Server mit FtpWebRequest von Azure App

Hier ist mein Code, der auf dem fTP-Server verbinden, aber wenn es nicht

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

Zeigen Sie uns ein [ 'FtpWebRequest' Log-Datei] (https://stackoverflow.com/q/9664650/850848) von lokalen und Azure. –

+0

Ich bin mir nicht sicher, wie ich das bekommen soll Ich denke, ich muss etwas in Bezug auf Sicherheit auf azurblauen tun – malballah

+0

Haben Sie den Link in meinem Kommentar folgen? –

Antwort

0

es sollte funktionieren auf Azure WebApp, ich testen sie den Code auf meiner Seite, funktioniert es richtig Azure bereitgestellt funktioniert. Das folgende ist mein Testcode. In Ihrem Fall könnten Sie remote debug the WebApp die Detailfehlerinformation erhalten. Wenn wir mehr über Azure WebApp wissen möchten, können wir uns auf beziehen.

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

Verwandte Themen