При установке заголовка Content-Type в WebClient.OpenWrite создает исключение WebException - PullRequest
3 голосов
/ 30 октября 2011

Я использую WebClient.OpenWrite для POST для веб-службы HTTP WCF в .NET 4. Если я устанавливаю тип содержимого в заголовках WebClient, то при возникновении потока я получаю исключение WebException (400 - Bad Request)закрыто.

var client = new WebClient();

// Setting ContentType generates a WebException on 400 - Bad Request when the stream is closed
//client.Headers[ HttpRequestHeader.ContentType ] = "application/json";

var stream = client.OpenWrite( "http://localhost:21159/Colors.svc/Color", "POST" );

var serializer = new DataContractJsonSerializer( typeof( ClientColor ) );
serializer.WriteObject( stream, color );
stream.Close();

Интерфейс службы выглядит следующим образом:

[ServiceContract]
public interface IColors
{
  [WebInvoke( UriTemplate = "Color", Method = "POST" )]
  void ColorPost( Stream color );
}

Если я установлю заголовок Content-Type на «application / xxx», тогда POST будет работать правильно.

Есть идеи, почему я получаю исключение WebException, когда тип контента "application / json"?

...