我一直在創建一個新的服務來將大文件下載到客戶端。我想在Windows服務中託管該服務。 在服務我寫:在WCF和Windows服務中下載大文件
public class FileTransferService : IFileTransferService
{
private string ConfigPath
{
get
{
return ConfigurationSettings.AppSettings["DownloadPath"];
}
}
private FileStream GetFileStream(string file)
{
string filePath = Path.Combine(this.ConfigPath, file);
FileInfo fileInfo = new FileInfo(filePath);
if (!fileInfo.Exists)
throw new FileNotFoundException("File not found", file);
return new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
}
public RemoteFileInfo DownloadFile(DownloadRequest request)
{
FileStream stream = this.GetFileStream(request.FileName);
RemoteFileInfo result = new RemoteFileInfo();
result.FileName = request.FileName;
result.Length = stream.Length;
result.FileByteStream = stream;
return result;
}
}
界面看起來像:
[ServiceContract]
public interface IFileTransferService
{
[OperationContract]
RemoteFileInfo DownloadFile(DownloadRequest request);
}
[DataContract]
public class DownloadRequest
{
[DataMember]
public string FileName;
}
[DataContract]
public class RemoteFileInfo : IDisposable
{
[DataMember]
public string FileName;
[DataMember]
public long Length;
[DataMember]
public System.IO.Stream FileByteStream;
public void Dispose()
{
if (FileByteStream != null)
{
FileByteStream.Close();
FileByteStream = null;
}
}
}
當我打電話它說,服務「的基礎連接已關閉。」 你可以得到執行 http://cid-bafa39a62a57009c.office.live.com/self.aspx/.Public/MicaUpdaterService.zip 請幫助我。
Whohoo ..它的工作。 只是另一個問題,你能告訴我如何增加消息的大小。它告訴我增加MaxReceivedMessageSize。 – abhishek 2010-08-27 13:02:12
您必須在客戶端上設置maxReceiveMessageSize。 – 2010-08-27 13:05:42
哇。我剛剛將客戶端中的傳輸模式更改爲流式傳輸,並且它的工作方式很神奇。 transferMode =「Streamed」 非常感謝您的幫助。 乾杯。 – abhishek 2010-08-27 14:31:44