我正在编写一个控制客户端下载的应用程序,我需要知道下载何时成功,但我需要在服务器端进行,但我找不到这样的东西。
这是我的服务器代码:
public GetCoverResponse GetCover(GetCoverRequest request)
{
return new GetCoverResponse()
{
Cover = downloadsManagementService.GetCover(request.IssueId)
};
}
[MessageContract]
public class GetCoverResponse: IDisposable
{
[MessageBodyMember(Order=1)]
public Stream Cover;
public void Dispose()
{
if (Cover != null)
{
Cover.Close();
Cover = null;
}
}
}
GetCover 返回一个流。我正在使用这个配置:
<basicHttpBinding>
<binding name="StreamedBindingConfiguration" messageEncoding="Mtom" maxBufferSize="65536"
transferMode="Streamed">
</binding>
</basicHttpBinding>
客户端代码是:
static void Main(string[] args)
{
var client = new DownloadsService.DownloadsServiceClient();
var data = client.GetCover(1);
FileStream f = new FileStream(@"D:\copiaDDDDDDD.txt", FileMode.OpenOrCreate);
Copy(data, f);
f.Close();
data.Close();
client.Close();
}
public static void Copy(Stream source, Stream target)
{
byte[] buffer = new byte[65536];
int bytes;
try
{
while ((bytes = source.Read(buffer, 0, buffer.Length)) > 0)
{
target.Write(buffer, 0, bytes);
}
}
finally
{
target.Flush();
}
}
我需要知道客户端下载何时成功,而无需再次调用该服务。