C# 如何在URL上放置身份验证令牌作为查询参数?

C# 如何在URL上放置身份验证令牌作为查询参数?,c#,asp.net-mvc,asp.net-mvc-5,json,url-encoding,C#,Asp.net Mvc,Asp.net Mvc 5,Json,Url Encoding,我正在我的ASP.NETMVC网站上进行PayPal Express结账 该站点使用令牌身份验证,因此我尝试将令牌作为查询参数放在PayPal返回URL上 我有一个处理程序,它拦截对我的站点的所有请求,并从URL或请求头中提取令牌 从标题中获取它很好,但是当它是一个查询参数时,我会得到以下异常。我从我的索赔负责人那里得到令牌,不做任何编码/解码。我试过了,但运气不好,同样的异常也发生了 System.ArgumentException was caught HResult=-21470248

我正在我的ASP.NETMVC网站上进行PayPal Express结账

该站点使用令牌身份验证,因此我尝试将令牌作为查询参数放在PayPal返回URL上

我有一个处理程序,它拦截对我的站点的所有请求,并从URL或请求头中提取令牌

从标题中获取它很好,但是当它是一个查询参数时,我会得到以下异常。我从我的索赔负责人那里得到令牌,不做任何编码/解码。我试过了,但运气不好,同样的异常也发生了

System.ArgumentException was caught
  HResult=-2147024809
  Message=Jwt10204: 'System.IdentityModel.Tokens.JwtSecurityTokenHandler' cannot read this string: '{really long token}'.
The string needs to be in compact JSON format, which is of the form: '<Base64UrlEncodedHeader>.<Base64UrlEndcodedPayload>.<OPTIONAL, Base64UrlEncodedSignature>'.
  Source=System.IdentityModel.Tokens.Jwt
  StackTrace:
       at System.IdentityModel.Tokens.JwtSecurityTokenHandler.ReadToken(String jwtEncodedString)
       at {our namespace}.Providers.JwtTokenServiceProvider.GetToken(String value)
       at {our namespace}.TokenAuthorisationController.Post(TokenRequest request)

问题是PayPal在URL的末尾附加了另一个类似PayPal Express签出令牌的字符串,并使用逗号作为分隔符,而不是&符号

因此,我通过删除逗号字符和逗号后的额外字符来额外添加我的JWT令牌,从而解决了这个问题