Post parameter is always null

[Originally Posted By]:

Since you have only one parameter, you could try decorating it with the [FromBody] attribute, or change the method to accept a DTO with value as a property, as I suggested here: MVC4 RC WebApi parameter binding

UPDATE: The official ASP.NET site was updated today with an excellent explanation:,-part-1

In a nutshell, when sending a single simple type in the body, send the just the value prefixed with an equal sign (=), e.g. body:


I have been scratching my head over this today.

My solution is to change the [FromBody] to a HttpRequestMessage, essentially moving up the http stack.

In my case I am sending data across the wire which is zipped json which is then base64’d. All this from an android app.

The original signature of my web endpoint looked like this (using [FromBody]) :

My original endpoint

My fix for this issue was to revert to using a HttpRequestMessage for the signature of my endpoint.

enter image description here

You can then get access to the post data using this line of code:

enter image description here

This works and allows you access to the raw untouched post data. You don’t have to mess around with fiddler putting an = sign at the beginning of your string or changing the content-type.

As an aside, I first tried to following one of the answers above which was to change the content type to: “Content-Type: application/x-www-form-urlencoded”. For raw data this is bad advice because it strips out + characters.

So a base64 string that starts like this: “MQ0AAB+LCAAAAAA” ends up like this “MQ0AAB LCAAAAAA”! Not what you want.

Another benefit of using HttpRequestMessage is that you get access to all the http headers from within your endpoint.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s