[英]ASP.NET MVC core POST Request not converting JSON data to Model
[英]Read JSON post data in ASP.Net Core MVC
我試圖找到一個解決方案,但所有出現的都是以前版本的ASP.Net。
我正在使用JWT身份驗證中間件並具有以下方法:
private async Task GenerateToken(HttpContext context)
{
var username = context.Request.Form["username"];
var password = context.Request.Form["password"];
//Remainder of login code
}
這會將發送的數據視為表單數據,但我的Angular 2前端將數據作為JSON發送。
login(username: string, password: string): Observable<boolean> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify({ username: username, password: password });
return this.http.post(this._api.apiUrl + 'token', body, options)
.map((response: Response) => {
});
}
我首選的解決方案是將其作為JSON發送,但我在檢索數據時失敗了。 我知道它正在發送,因為我可以在小提琴手中看到它,如果我使用Postman並且只是發送表單數據就可以了。
基本上我只需要弄清楚如何更改此行以讀取json數據
var username = context.Request.Form["username"];
當它到達你的中間件時,請求流已經被讀取了,所以你可以在這里做的是請求上的Microsoft.AspNetCore.Http.Internal.EnableRewind並自己讀取它
網站范圍:
Startup.cs
using Microsoft.AspNetCore.Http.Internal;
Startup.Configure(...){
...
//Its important the rewind us added before UseMvc
app.Use(next => context => { context.Request.EnableRewind(); return next(context); });
app.UseMvc()
...
}
或選擇性:
private async Task GenerateToken(HttpContext context)
{
context.Request.EnableRewind();
string jsonData = new StreamReader(context.Request.Body).ReadToEnd();
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.