在处理传入的 TCP 网络流时面临问题



我正在尝试通过读取传入的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 中。想知道是否有人得到了更好的解决方案(解决方法),而不是将传入流复制到内存流并对其进行处理。

TCP 是一种流协议,字节以任意速率流动。此外,网络流在流的一端关闭之前一直保持打开状态,这可能不会在呼叫期间的某个点为您提供确切的长度。大多数情况下,由于这个原因,你会得到这些例外。

正如您所提到的,一旦您拥有自己的内存流,您就可以在其中转储 tcp 流内容,但仍然可以更好地控制流。拥有由内存流管理的内存流后,可以直接从内存流上传 blob,

相关内容

  • 没有找到相关文章

最新更新