ASP.NET la forme de Base afficher les résultats dans un HTTP 415 Unsupported Media Type de réponse
L'envoi d'un formulaire de requête HTTP POST (Content-Type: application/x-www-form-urlencoded
) au-dessous de contrôleur de résultats dans un HTTP 415 Unsupported Media Type réponse.
public class MyController : Controller
{
[HttpPost]
public async Task<IActionResult> Submit([FromBody] MyModel model)
{
//...
}
}
Post de formulaire en-têtes HTTP:
POST /submit HTTP/1.1
Host: example.com:1337
Connection: keep-alive
Content-Length: 219
Pragma: no-cache
Cache-Control: no-cache
Origin: https://example.com:1337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: https://example.com:1337/submit
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8,nl;q=0.6
Cette habitude de travailler avec ASP.NET MVC 5 sur .NET 4.6.
- vous n'avez pas à utiliser [FromForm] "Soumettre(Monmodèle modèle)" aussi obtenir le modèle correctement.
Vous devez vous connecter pour publier un commentaire.
Pour les formulaires, utiliser le
[FromForm]
attribut au lieu de la[FromBody]
attribut.Le dessous de la manette fonctionne avec ASP.NET de Base 1.1:
Vous pouvez utiliser [FromBody] mais vous devez définir la Content-Type en-tête de votre demande de application/json
comme
application/x-www-form-urlencoded
. Comme à partir d'un<form>
sur une page HTML.Que plus de bonnes réponses, Vous n'avez pas à utiliser
[FromForm]
pour obtenir des données de formulaire dans le contrôleur. Cadre de convertir automatiquement les données du formulaire modèle que vous le souhaitez. Vous pouvez mettre en œuvre comme suit.C'est mon cas: il est exécuté
Environnement: Le Réseau De Base 2.1
Contrôleur:
Vue:
Vous devez d'abord préciser dans les en-Têtes de la
Content-Type
, par exemple, il peut êtreapplication/json
.Si vous définissez
application/json
type de contenu, alors vous devez l'envoyer au format json.Donc dans le
body
de votre demande, vous envoyer pasform-data
, pasx-www-for-urlencoded
mais unraw
json, par exemple{"Username": "user", "Password": "pass"}
Vous pouvez adapter l'exemple à différents types de contenus, y compris ce que vous voulez envoyer.
Vous pouvez utiliser un outil comme Facteur ou curl de jouer avec cela.