我想编写一个WCF Web服务,可以通过电线将文件发送到客户端。所以我有一个发送Stream响应的设置。这是我在客户端上的代码:为什么WCF Stream响应在写入磁盘时被破坏?
private void button1_Click(object sender, EventArgs e)
{
string filename = System.Environment.CurrentDirectory + "\\Picture.jpg";
if (File.Exists(filename))
File.Delete(filename);
StreamServiceClient client = new StreamServiceClient();
int length = 256;
byte[] buffer = new byte[length];
FileStream sink = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
Stream source = client.GetData();
int bytesRead;
while ((bytesRead = source.Read(buffer,0,length))> 0)
{
sink.Write(buffer,0,length);
}
source.Close();
sink.Close();
MessageBox.Show("All done");
}
一切正常,没有错误或异常。问题是,当我打开它时,正在传输的.jpg文件被报告为“损坏或太大”。
我在做什么错?
在服务器端,这里是发送文件的方法。
public Stream GetData()
{
string filename = Environment.CurrentDirectory+"\\Chrysanthemum.jpg";
FileStream myfile = File.OpenRead(filename);
return myfile;
}
我使用basicHttp与Transfermode.StreamedResponse绑定来配置服务器。
不要忘记在FileStream周围使用using()子句。 – Cheeso 2010-04-28 03:15:20