【问题标题】:The remote server returned an error: (550) File unavailable (e.g., file not found, no access)远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)
【发布时间】:2013-11-07 05:58:05
【问题描述】:

我想从 ftp 服务器下载一个图像,但是当我转到“FtpWebResponse”时,我只是得到了这个异常作为标题。

下面是我的下载功能

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(myStringWebSource);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(this.FtpUserID, this.FtpPassword);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream);
System.IO.StreamWriter writer = new System.IO.StreamWriter(SaveFile);
writer.Write(reader.ReadToEnd());

writer.Close();
reader.Close();
response.Close();

我用谷歌搜索了这个异常几天,但我仍然无法弄清楚为什么会出错。如果没有足够的信息,请告诉我。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    当你要下载的文件正被另一个进程使用时,你会得到这个错误。

    【讨论】:

      【解决方案2】:

      为了解决这个问题,需要强制 System.Net.FtpWebRequest 命令恢复到以前在 .Net Framework 2.0/3.5 中的工作方式,并在发出之前发出额外的 CWD 命令实际的命令。

      为此,需要在调用 System.Net.FtpWebRequest 类的任何实例之前放置以下代码。下面的代码只需要调用一次,因为它改变了整个应用程序域的设置。

      private static void SetMethodRequiresCWD()
      {
          Type requestType = typeof(FtpWebRequest);
          FieldInfo methodInfoField = requestType.GetField("m_MethodInfo", BindingFlags.NonPublic | BindingFlags.Instance);
          Type methodInfoType = methodInfoField.FieldType;
      
      
          FieldInfo knownMethodsField = methodInfoType.GetField("KnownMethodInfo", BindingFlags.Static | BindingFlags.NonPublic);
          Array knownMethodsArray = (Array)knownMethodsField.GetValue(null);
      
          FieldInfo flagsField = methodInfoType.GetField("Flags", BindingFlags.NonPublic | BindingFlags.Instance);
      
          int MustChangeWorkingDirectoryToPath = 0x100;
          foreach (object knownMethod in knownMethodsArray)
          {
              int flags = (int)flagsField.GetValue(knownMethod);
              flags |= MustChangeWorkingDirectoryToPath;
              flagsField.SetValue(knownMethod, flags);
          }
      }
      

      http://support.microsoft.com/kb/2134299

      【讨论】:

        猜你喜欢
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 2013-07-02
        • 1970-01-01
        相关资源
        最近更新 更多