When you read C.Request.Content, the content is saved in a cache and is not reloaded anymore. Thus changing the stream doesn't change anything. Change your code to read directly from original ContentStream, something like this (untested):
Then in CopyToStream you copy the content from one string to another, preferably using buffers as C.Request.Content.Size might not be set in the stream (in the case of chunked contents).