从 JsonResult 反序列化 GenericXMLSecurityToken
Posted
技术标签:
【中文标题】从 JsonResult 反序列化 GenericXMLSecurityToken【英文标题】:Deserialize GenericXMLSecurityToken from JsonResult 【发布时间】:2019-08-20 16:02:50 【问题描述】:当尝试从 HTTPResponseMessage 反序列化 GenericXMLSecurityToken 时,出现以下异常:
"无法创建类型的实例 System.IdentityModel.Tokens.SecurityKeyIdentifier 子句。类型是一个 接口或抽象类,不能实例化。小路 'internalTokenReference.assertionId',第 1 行,位置 162。”
在服务器上,序列化对象是使用
创建的new JsonResult(genericToken)
其中genericToken
是GenericXmlSecurityToken
。在我使用的客户端
HttpResponseMessage response = await httpClient.PostAsync("https://localhost:44359/api/TokenService/RequestToken", requestcontent);
String responseString = await response.Content.ReadAsStringAsync();
GenericXMLSecurityToken result = JsonConvert.DeserializeObject<GenericXMLSecurityToken>(responseString);
但是,最后一行会引发上述文本的异常。我非常了解这个错误,因为我知道我无法实例化该类型,因为它是抽象的,是否有另一种方法可以序列化这种类型来解决这个问题,或者它只是不能序列化为 JSON?
【问题讨论】:
【参考方案1】:不幸的是,我从未解决过这个问题,我只是通过将 XML 表示作为字符串返回 (GenericXmlSecurityToken.TokenXml.OuterXml
) 来绕过它。
【讨论】:
以上是关于从 JsonResult 反序列化 GenericXMLSecurityToken的主要内容,如果未能解决你的问题,请参考以下文章
无法将当前 JSON 数组(例如 [1,2,3])反序列化为“System.Collections.Generic.Dictionary”类型
无法将当前 JSON 对象(例如 "name":"value")反序列化为类型 'System.Collections.Generic.List`1