gpt4 book ai didi

c# - 在 WCF 客户端中查找流对象的长度?

转载 作者:行者123 更新时间:2023-11-30 14:35:36 26 4
gpt4 key购买 nike

我有一个 WCF 服务,它使用 Stream 类上传文档。

在此之后,我想获取文档的大小(流的长度),以更新 FileSize 的 fileAttribute。

但是这样做,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)

谁能帮我解决这个问题。

最佳答案

Now after this, i want to get the Size of the document(Length of Stream), to update the fileAttribute for FileSize.

不,不要那样做。如果你正在写一个文件,那么就写文件。最简单的:

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 选项(完整的消息安全性等)要求在处理之前验证整个消息,因此永远不能真正流式传输,因此:如果大小很大,我建议您改用客户端将其拆分并分段发送的 API(然后您在服务器上重新组装)。

关于c# - 在 WCF 客户端中查找流对象的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com