MVC Action Api & Système.Web.Http.AuthorizeAttribute - Comment obtenir les paramètres post?

J'ai l'API suivante Contrôleur:

public class TestController : ApiController
{
    [HttpPost]
    [APIAuthorizeAttribute]
    public IQueryable<Computers> ListOfComputersInFolder(Guid folderId)
    {
        return GetListOfComputersForFolder(folderId);
    } //End of ListOfComputersInFolder
} //End of TestController 

Et celle-ci est ma base de APIAuthorizeAttribute.

public class APIAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var Request = System.Web.HttpContext.Current.Request;
var folderId = Request.RequestContext.RouteData.Values["folderId"] ?? Request.Params["folderId] as string;
if(null == folderId)
{
folderId = actionContext.ControllerContext.RouteData.Values["folderId"];
}
base.OnAuthorization(actionContext);
}
}

Le problème que je rencontre est que folderId est en train de sortir la valeur null dans la onAuthorize méthode. (J'en fonction de l'outil de récupération sur cette code).

Il me semble que cela devrait fonctionner, mais je n'arrive pas à l'obtenir. Toutes les idées sur ce que je fais de mal et comment je dois faire pour avoir la posté paramètre?

Edit: j'ai essayé de lire le post de données directement avec les éléments suivants:

using (StreamReader inputStream = new StreamReader(request.InputStream))
{
output = inputStream.ReadToEnd();
}
request.InputStream.Position = 0;

Qui me met le post de données au format JSON qui je pourrais ensuite d'analyser, mais alors que mon appel ne se rend jamais bien. J'obtiens l'exception suivante dans la Réponse:

  <h2>500 - Internal server error.</h2>
<h3>There is a problem with the resource you are looking for, and it cannot be displayed.
at System.Json.JXmlToJsonValueConverter.JXMLToJsonValue(Stream jsonStream, Byte[] jsonBytes)\u000d\u000a   at System.Net.Http.Formatting.JsonMediaTypeFormatter.<>c__DisplayClass7.<OnReadFromStreamAsync>b__6()\u000d\u000a   at System.Net.Http.Internal.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)"}

EDIT:
En fin de compte, il semble que cela pourrait être un bug avec la combinaison de ApiController, System.Web.Http.AuthorizeAttribute et HttpPost (il ne fonctionne pas lors de l'utilisation de HttpGet). Un rapport de bug a été soumis.

OriginalL'auteur Kyle | 2012-08-31