我有一个 WCF 服务,它使用上传文档Stream
class.
现在在此之后,我想获取文档的大小(流的长度),以更新文件大小的文件属性。
但这样做时,WCF 会抛出异常:
Document Upload Exception: System.NotSupportedException: Specified method is not supported.
at System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream.get_Length()
at eDMRMService.DocumentHandling.UploadDocument(UploadDocumentRequest request)
谁能帮我解决这个问题。
现在在此之后,我想获取文档的大小(流的长度),以更新文件大小的文件属性。
不,不要这样做。如果你正在写一个文件,那么只需写入文件。最简单的是:
using(var file = File.Create(path)) {
source.CopyTo(file);
}
或4.0之前:
using(var file = File.Create(path)) {
byte[] buffer = new byte[8192];
int read;
while((read = source.Read(buffer, 0, buffer.Length)) > 0) {
file.Write(buffer, 0, read);
}
}
(不需要提前知道长度)
请注意,某些 WCF 选项(完整的消息安全性等)要求在处理之前验证整个消息,因此永远不能truly流,所以:如果大小很大,我建议您使用 API,客户端将其拆分并分段发送(然后在服务器上重新组装)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)