C# Asp.Net Core FromBody参数在角度PUT请求时始终为空
我尝试在我的项目中更新工作人员的身份,我使用带有put的HttpClient,在Angular 6项目和.NET Core上的web API 2中工作。您可以在这里看到前端的请求:C# Asp.Net Core FromBody参数在角度PUT请求时始终为空,c#,angular,asp.net-core,angular-httpclient,C#,Angular,Asp.net Core,Angular Httpclient,我尝试在我的项目中更新工作人员的身份,我使用带有put的HttpClient,在Angular 6项目和.NET Core上的web API 2中工作。您可以在这里看到前端的请求: updateWorkerIdentity(worker: WorkerRead) : Observable<WorkerRead> { const url = 'workerinfo/activeContractId=' + worker.activeContract.id; return
updateWorkerIdentity(worker: WorkerRead) : Observable<WorkerRead> {
const url = 'workerinfo/activeContractId=' + worker.activeContract.id;
return this.httpClient.put<WorkerRead>(url , JSON.stringify(worker) );
}
UpdateWorkerReadEntity(worker:WorkerRead):可观察{
常量url='workerinfo/activeContract='+worker.activeContract.id;
返回这个.httpClient.put(url,JSON.stringify(worker));
}
在API方面:
[HttpPut("{activeContractId}")]
public async Task<IActionResult> Put([FromRoute] string activeContractId, [FromBody] WorkerRead worker)
{
var companyId = GetCompanyId();
var period = GetPeriod();
var language = GetLanguage();
var workerInfo = await _workerInfoService.UpdateWorkerIdentity(companyId, activeContractId, language, worker);
return Ok(workerInfo);
}
[HttpPut(“{activeContractId}”)]
公共异步任务Put([FromRoute]string ActiveCompressed,[FromBody]WorkerRead worker)
{
var companyId=GetCompanyId();
var period=GetPeriod();
var language=GetLanguage();
var workerInfo=await\u workerInfoService.updateWorkerkeredEntity(companyId、activeContractId、language、worker);
返回Ok(workerInfo);
}
来自[FromRoute]
的activeconstract
已正确发送,但工作进程仍然为空
从车身发送的工人发送得很好,正如您在有效载荷中看到的:
标题的内容类型是application/JSON
有人有什么想法吗?对于一个简单的端点,服务器端的一切看起来都很好 但是,基于
[HttpPut(“{activeconstrucd}”)]
路由模板,客户端的请求应该被重构以匹配预期的模板
updateWorkerIdentity(worker: WorkerRead) : Observable<WorkerRead> {
const url = 'workerinfo/' + worker.activeContract.id;
return this.httpClient.put<WorkerRead>(url , worker);
}
请编辑您的问题并将源代码粘贴为文本。您的url错误。查询字符串以e
?
开头,然后是名称/值对。如果我这样编写查询:const url='workerinfo?activeContract='+worker.activeContract.id;它不会转到api,而是删除querystring并将id直接放入URL中,而我对角度检查是否正确调用put请求不太熟悉。特别是有效载荷
[Route("[controller]")]
public class WorkerInfoController : Controller {
//...
//PUT workerinfo/123456
[HttpPut("{activeContractId}")]
public async Task<IActionResult> Put([FromRoute] string activeContractId, [FromBody] WorkerRead worker) {
var companyId = GetCompanyId();
var period = GetPeriod();
var language = GetLanguage();
var workerInfo = await _workerInfoService.UpdateWorkerIdentity(companyId, activeContractId, language, worker);
return Ok(workerInfo);
}
}