首页 > 解决方案 > 如何在Angular中正确传递标头参数?

问题描述

在 Angular 中传递我的标头参数时遇到一些问题。我从我的 API 得到的错误是“需要会话 ID”,如下所示。这是我的端点:

       [HttpDelete("")]

        public IActionResult EndSession(
            [Required(ErrorMessage = "Session Id is required.")]
            [StringLength(maximumLength: 36, MinimumLength = 36, ErrorMessage  = "Session Id should be 36 characters long.")]
            [FromHeader] string sessionId)

这是我在角度应用程序中的服务方法:

public async EndSession(sessionId: string): Promise<boolean> {

const headers = new HttpHeaders()
  .set(sessionId , 'string')

this.appSettings = (await this.configService.loadConfig().toPromise());

return this.http.delete<boolean>(this.appSettings.apiSetting.apiAddress + this.apiRoute, { headers })
  .pipe(
    retry(1),
    catchError(this.handleError)
)
  .toPromise()

在我调用此方法的组件中,我将 sessionId 硬编码如下:

  export class AppBarHorizontalComponent implements OnInit {
  sessionId = "4CB3C85B-2C11-48AE-8D51-1DC30242A743"
  constructor(private oauthService: OAuthService, private userService: UserSessionService) {  }

public logout(): void {
this.userService.EndSession(this.sessionId);
//this.oauthService.logOut(false);

我期望将 sessionId 作为标头参数正确传递,以便 api 方法可以正常执行。

标签: c#angulartypescriptasp.net-core-webapi

解决方案


发现我的错误。在我设置标题的服务方法中,我混淆了参数。它是:

const headers = new HttpHeaders()
  .set(sessionId , 'string')

变成:

const headers = new HttpHeaders()
  .set('sessionId', sessionId)

推荐阅读