NetworkStream nie obsługuje operacji wyszukiwania

Tworzę prosty serwer proxy, ale napotkałem dziwną sytuację, mam następujący kod:

var clientRequestStream = _tcpClient.GetStream();
var requestHeader = clientRequestStream.GetUtf8String();

GetUtf8String to metoda rozszerzenia dlaStream klasa, która odczytuje strumień (zawieraHttpRequest nagłówki). Muszę wyodrębnić te nagłówki, aby uzyskać dostęp do adresu URL hosta i żądanego. Po przeczytaniu NetworkStream jest zakończone. Muszę wykonać operację wyszukiwania i ustawić jejclientRequestStream.Position = 0; ponieważ muszę odczytać ten strumień i zapisać go na innym pilocieNetworkStream.

Nie wiem, jak mam rozwiązać ten problem. Wszelkie porady będą pomocne.

Edytować: Próbowałem również skopiować NetworkStream do MemoryStream, a następnie wykonać operację wyszukiwania na MemoryStream, nie ma wyjątku, ale gdy chcę odczytać z NetworkStream, jego bufor zawsze jest pusty.

Użyłem również reflektora, aby zobaczyć, co dzieje się w środkuStream.CopyTo. Zobacz poniższy kod:

    private void InternalCopyTo(Stream destination, int bufferSize)
    {
        int num;
        byte[] buffer = new byte[bufferSize];
        while ((num = this.Read(buffer, 0, buffer.Length)) != 0)
        {
            destination.Write(buffer, 0, num);
        }
    }

To właśnie robi CopyTo. Nawet jeśli używamCopyTo Problem jest nadal nierozwiązany. Ponieważ czyta źródło (Here NetworkStream) do końca. Mam inny sposób na poradzenie sobie z tą sytuacją?

questionAnswers(4)

yourAnswerToTheQuestion