从 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)

其中genericTokenGenericXmlSecurityToken。在我使用的客户端

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”类型

在 Objective C 中反序列化 JSON 字符串

ASP.Net Core 中的 JSON 序列化/反序列化

MVC中JSON字符长度超出限制

无法将当前 JSON 对象(例如 "name":"value")反序列化为类型 'System.Collections.Generic.List`1

将 Azure 搜索结果反序列化为您自己的模型的最佳方法是啥?