【问题标题】:Cannot connect to ftp server with FtpWebRequest from Azure app无法使用 Azure 应用程序中的 FtpWebRequest 连接到 ftp 服务器
【发布时间】:2017-11-03 07:33:38
【问题描述】:

我可以使用本地 asp.net 应用程序将文件上传到 azure ftp 服务器,但是在将应用程序发布到 azure 后无法正常工作,这让我没有登录

这是我连接到 ftp 服务器的代码,但是当部署到 azure 时它不起作用

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();
        }
    }

【问题讨论】:

    标签: c# asp.net .net azure ftp


    【解决方案1】:

    它应该可以在 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();
        }
    

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 2013-01-20
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多