Webclient is used to upload the instruction file (up to 1 megabyte) to the server, which receives this managed set of commands as a response (up to 1 megabyte) as binary data.
I can upload binaries and upload binaries, but I cannot do this with the same request / response command. So, not the same web client can do this. In this case, it loses the link to the stream that was installed on the server.

How to write and read binary data in one sequence?
.
Server script
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 'Setup data reader If cRead Is Nothing Then cRead = New ReadDataFromContext cRead.Read(context) 'read data from 'context.Request.InputStream' If cWrite Is Nothing Then cWrite = New WriteDataToContext cWrite.Write(context) 'write data to 'context.Response.OutputStream' End Sub
.
Customer class
Partial Public Class MainPage Inherits UserControl Private WithEvents WCUpload As WebClient 'Private WithEvents WCDownload As WebClient Private Stream As IO.Stream Dim U As New Uri("http://localhost:51001/communicator.ashx", UriKind.Absolute) Public Sub New() InitializeComponent() WCUpload = New WebClient 'WCDownload = New WebClient End Sub Private Sub btnTest_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btnTest.Click WCUpload.OpenWriteAsync(U) End Sub 'This methode is never called if using WCUpload (on WCDownload it works but WCDownload has no more data) 'Private Sub WC_OpenReadCompleted(sender As Object, e As System.Net.OpenReadCompletedEventArgs) Handles WCDownload.OpenReadCompleted ' Dim D(e.Result.Length - 1) As Byte ' e.Result.Read(D, 0, D.Length) ' Me.btnTest.Content = System.Text.Encoding.UTF8.GetString(D, 0, D.Length) 'End Sub Private Sub WC_OpenWriteCompleted(sender As Object, e As System.Net.OpenWriteCompletedEventArgs) Handles WCUpload.OpenWriteCompleted Me.Stream = e.Result Dim D() As Byte = System.Text.Encoding.UTF8.GetBytes("Hallo Timo") Me.Stream.Write(D, 0, D.Length) Me.Stream.Close() End Sub Private Sub WC_WriteStreamClosed(sender As Object, e As System.Net.WriteStreamClosedEventArgs) Handles WCUpload.WriteStreamClosed 'WC.OpenReadAsync(U) 'WCDownload.OpenReadAsync(U) Me.Stream.Position = 0 '<<--- ERROR, cannot access to disposed object Dim D(Me.Stream.Length - 1) As Byte Me.Stream.Read(D, 0, D.Length) Me.btnTest.Content = System.Text.Encoding.UTF8.GetString(D, 0, D.Length) End Sub Public Sub PushData(ByVal StreamIn As IO.Stream, ByVal StreamOut As IO.Stream) Dim Buffer(4096 - 1) As Byte Dim BytesRead As Integer On Error Resume Next 'RaiseEvent Progress(Me, 0) Do BytesRead = StreamIn.Read(Buffer, 0, Buffer.Length) If BytesRead <= 0 Then Exit Do StreamOut.Write(Buffer, 0, BytesRead) 'RaiseEvent Progress(Me, StreamOut.Length / StreamIn.Length * 99) 'max 99 to raise the event with 100% Loop 'RaiseEvent Progress(Me, 100) End Sub End Class