Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何:以字符串形式保存StreamReader内容_C#_Wpf_String_Ftp_Streamreader - Fatal编程技术网

C# 如何:以字符串形式保存StreamReader内容

C# 如何:以字符串形式保存StreamReader内容,c#,wpf,string,ftp,streamreader,C#,Wpf,String,Ftp,Streamreader,如何:以字符串形式保存StreamReader内容 我正在尝试将StreamReader内容保存为字符串。不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器) 德语错误消息:这是一个错误。 ObjectName:“System.Net.Sockets.NetworkStream”。 StreamReader streamReader = new StreamReader(responseStream); string text = streamReader.ReadToEnd();

如何:以字符串形式保存StreamReader内容

我正在尝试将
StreamReader
内容保存为字符串。不幸的是,我不允许保存内容,因为对象似乎丢失了(来自FTP服务器)

德语错误消息:这是一个错误。 ObjectName:“System.Net.Sockets.NetworkStream”。

StreamReader streamReader = new StreamReader(responseStream);
string text = streamReader.ReadToEnd();
错误消息ENGLISH:无法访问丢弃对象。对象名称:“System.Net.Sockets.NetworkStream”。

StreamReader streamReader = new StreamReader(responseStream);
string text = streamReader.ReadToEnd();
错误来自第2行


编辑:

public void DownloadFileWithFtp()
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XYZ.bplaced.net/Testumgebung/Texte/" + comboBox_DataPool.SelectedValue);
        request.Credentials = new NetworkCredential("BN", "PW");
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();

        StreamReader streamReader = new StreamReader(responseStream);
        MessageBox.Show(streamReader.ReadToEnd());
        //textBoxText = streamReader.ReadToEnd();
        streamReader.Close();

        MessageBox.Show(response.StatusDescription);
        response.Close();
    }

如果检查从
FtpWebResponse
GetResponseStream()
方法返回的
responseStream
,您将注意到布尔属性为false

以这种方式多次读取流总是会导致错误。在下一次调用
ReadToEnd()
之前,您应该先调用
Seek(0,0)
。然而,在这种情况下,调用
responseStream.Seek(0,0)
将导致抛出
NotSupportedException

将结果赋给中间变量一次将有效。也可以使用
使用
块,而不是
Close()
方法:

public void DownloadFileWithFtp() {
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://XYZ.bplaced.net/Testumgebung/Texte/" + comboBox_DataPool.SelectedValue);
  request.Credentials = new NetworkCredential("BN", "PW");
  request.Method = WebRequestMethods.Ftp.DownloadFile;

  using(FtpWebResponse response = (FtpWebResponse)request.GetResponse()) {
    using(Stream responseStream = response.GetResponseStream()) {
      using(StreamReader streamReader = new StreamReader(responseStream)) {
        string content = streamReader.ReadToEnd();
        MessageBox.Show(content);
        textBox.Text = content;
      }
    }
    MessageBox.Show(response.StatusDescription);
  }
}

这里的StreamReader没有什么问题,它只是从底层流返回一个异常。首先,你是如何构建responseStream的?谢谢。请看我的完整代码编辑后的文章。只是一些来自德国同胞的一般建议:卸载所有语言包。英语信息更准确,更容易得到帮助,职业发展也用英语进行。(英文消息会逐字告诉您正在访问已处理的对象。由于翻译错误,您无法识别此事实。)作为解决方法,请使用
WebClient.DownLoadString()
将所有代码替换为一行。感谢您的帮助。我将卸载所有语言包,并尝试使用该解决方法。但是,我的问题没有解决。:-)