Bug 30561

Summary: Setting HttpContent in System.Net.Http does not set ContentLength header.
Product: [Mono] Class Libraries Reporter: sornakumar
Component: System.Net.HttpAssignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: normal CC: masafa, mono-bugs+monomac, mono-bugs+mono
Priority: ---    
Version: unspecified   
Target Milestone: Untriaged   
Hardware: PC   
OS: Windows   
Tags: Is this bug a regression?: ---
Last known good build:

Description sornakumar 2015-05-28 18:38:31 UTC
var content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("Hello, World")));
var length = content.Headers.ContentLength;
foreach (var header in content.Headers)
{
  if (header.Key == "ContentLength")
  {
    Console.WriteLine("Content Length was set");
    break;
  }
}

The above code prints "Content Length was set" in .NET but does not do the same in Mono. The reason being - the ContentLength property in HttpContentHeaders sets the header in .NET but it just returns the value in mono: https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/System.Net.Http.Headers/HttpContentHeaders.cs#L70
Comment 1 Chris Hamons 2015-07-02 11:32:28 UTC
This appears to be a Mono Class Library bug. 

@sornakumar MonoMac is for the open source bindings to OS X. I'll move it to the correct product, but if your example doesn't contain "using MonoMac;" please consider filing it against another product.
Comment 2 Marek Safar 2015-07-09 11:53:46 UTC
Fixed in master