Je suis en train d'essayer ASP.NET Core MVC et je n'arrive pas à faire fonctionner une route avec un paramètre marqué avec le symbole [FromBody]
. J'utilise ASP.NET Core 2.2 sous .NET Framework (complet, pas core). Voici l'intégralité de mon contrôleur :
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
namespace EmailSch.Api.Controllers
{
[ApiController]
[Route("/api")]
public class EmailJobController : ControllerBase
{
public EmailJobController() { }
[Route("emailsch/job"), HttpPost]
public IActionResult RunEmailJob([FromBody]string options)
{
return Ok();
}
}
}
J'essaie de l'appeler depuis PowerShell en utilisant :
Invoke-RestMethod -Uri http://localhost:9000/api/emailsch/job -Method Post -Body 'Hello there' (Bonjour)
Le résultat est :
Invoke-RestMethod : Le serveur distant a renvoyé une erreur : (500) Internal Server Error.
Aucune exception n'est levée dans mon code et aucun point d'arrêt n'est déclenché. Si je supprime le paramètre :
public IActionResult RunEmailJob()
{
return Ok("Hi");
}
Il fonctionne bien. Y a-t-il quelque chose que je dois configurer dans mon Startup pour que cela fonctionne ? Voici l'ensemble de ma classe Startup :
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore();
}
public void Configure(IApplicationBuilder app)
{
app.UseMvcWithDefaultRoute();
}
}