我想發佈一些JSON到Web API .NET的核心,但由於某種原因,這始終是空不管下面我有試過見代碼。角度支柱JSON到.NET的核心Web API爲空(更新)
這是我的.NET的核心Web API代碼
[Produces("application/json")]
[Route("api/v1/Issues")]
[Authorize]
[EnableCors("AllowCors")]
public class IssuesController : Controller
{
[HttpPost]
public IActionResult PostIssues([FromBody] string issue)
{
//some code to desirialize
}
}
,這就是我如何嘗試通過角後(注意適當的服務被加載)
public addIssue(issue) {
const headers = new Headers();
this.authService.getToken().toPromise().then(t => {
headers.append('Authorization', `Bearer ${t.toString()}`);
headers.append('Content-Type', 'application/json')
this.http.post(`${this.baseUrl}/v1/issues`, issue, {
headers: headers
}).toPromise()
.then(res => {
console.log(res.json());
});
});
}
我曾嘗試改變後到
this.http.post(`${this.baseUrl}/v1/issues`, JSON.stringify(issue))
甚至
this.http.post(`${this.baseUrl}/v1/issues`, {'issue', JSON.stringify(issue)})
但似乎沒有任何人有任何想法,爲什麼會發生這種情況? 澄清在API上收到的string issue
始終爲空。 下面是當我達到你所看到的請求負載不爲空,服務器的全成響應,但到達網頁API爲空
更新1如果可能的話 好吧,我想做一點需要說明實驗相同的代碼爲4.5框架,而不是一個.NET的核心工作正常不過我嘗試了.NET的核心做的,工作是創建一個名爲Foo類見下文
public class Foo
{
public string Name { get; set; }
public string Json { get; set; }
}
並修改我的控制器接受這個對象
[HttpPost]
public IActionResult PostIssues([FromBody] Foo issue)
{
Debug.Write(issue);
return Ok(issue);
}
以及我的角度項目通過一項類似的格式身體
public addIssue(issue) {
const headers = new Headers();
this.authService.getToken().toPromise().then(t => {
headers.append('Authorization', `Bearer ${t.toString()}`);
headers.append('Content-Type', 'application/json');
this.http.post(`${this.baseUrl}/v1/issues`, {'name' : 'name', 'json': JSON.stringify(issue)}, {
headers: headers,
withCredentials: true
}).toPromise()
.then(res => {
console.log(res.json());
});
});
}
這是爲什麼確定但不能直接傳遞Json?爲什麼我的原始代碼可以在4.5框架上運行,但不能在.net內核上運行?
你在'PostIssues()'中返回什麼? JS中'issue'的價值是什麼? – chakeda
我回來了好(desieralized問題),但我不明白爲什麼這將是一個問題,這個問題是,我的帖子JSON收到空API上 – Harry
啊好吧 - 我以爲你的意思是'res.json()'是空值。你的客戶請求是什麼樣的(來自Fiddler或開發工具)? – chakeda