This doesnt make sense. From your code, it appears you are doing everything right, (although setting both chunked and content-length is not needed, you should set one or the other). This exception you are getting (ProtocolViolationException) is very confusing.
If the redirect (303) does not require content to be posted again, then the system.net library should have drained your content transparently. It should not be throwing this exception.
Can you get a repro with tracing enabled (see instructions in my signature) and post the trace log on pastebin.com and put a link here?