 <p>The format of the value you are passing into the constructor of the <code>MediaTypeHeaderValue</code> is invalid. You are also trying to add multiple content types to the header value. </p> <p>Content type header takes a single type/subtype, followed by optional parameters separated with semi-colons <code>;</code> </p> <p>eg:</p> <pre><code>Content-Type: text/html; charset=ISO-8859-4 </code></pre> <p>For your result you need to decide on which one you want to use. <code>application/zip</code> or <code>application/octet-stream</code></p> <pre><code>result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip"); </code></pre> <p>Also, to avoid exception you can use the <code>MediaTypeHeaderValue.TryParse</code> method</p> <pre><code>var contentTypeString = "application/zip"; MediaTypeHeaderValue contentType = null; if(MediaTypeHeaderValue.TryParse(contentTypeString, out contentType)) { result.Content.Headers.ContentType = contentType; } </code></pre>