Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.Net Core FromBody参数在角度PUT请求时始终为空_C#_Angular_Asp.net Core_Angular Httpclient - Fatal编程技术网

C# Asp.Net Core FromBody参数在角度PUT请求时始终为空

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

我尝试在我的项目中更新工作人员的身份,我使用带有put的HttpClient,在Angular 6项目和.NET Core上的web API 2中工作。您可以在这里看到前端的请求:

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);
    }    
}