1

我正在尝试通过读取传入的 TCP 网络流通过 FTP 服务将文件(blob)上传到 Azure 存储。每当我尝试在 Uploadblob 方法中执行诸如 stream.length、stream.seek 之类的操作时,我都会收到以下未处理的异常:

 Unhandled Exception!
 Error ID: 0
 Error Code: Unknown
 Is Warning: False
Type: System.NotSupportedException
 Stack:    at     System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream.get_Length()

解决方法是从流中读取直到耗尽,然后将数据复制到 MemoryStream 中。想知道是否有人有更好的解决方案(解决方法),而不是将传入流复制到内存流并进行处理。

4

1 回答 1

1

TCP 是一种流协议,字节流以任意速率传输。此外,网络流保持打开状态,直到它被流的一端关闭,这可能无法让您在通话期间的某个点获得确切的长度。大多数情况下,由于这个原因,您会遇到这些异常。

正如您所提到的,一旦您拥有自己的内存流,您可以在其中转储 tcp 流内容,但仍然可以对流进行更多控制。一旦你有一个由你管理的内存流,你可以直接从 MemoryStream 上传 blob,

于 2012-10-10T19:35:25.800 回答