#c# #asp.net-web-api #asp.net-core #json.net #asp.net-core-mvc
#c# #asp.net-веб-api #asp.net-core #json.net #asp.net-core-mvc
Вопрос:
При попытке десериализовать GenericXmlSecurityToken из HttpResponseMessage я получаю следующее исключение:
«Не удалось создать экземпляр типа System.IdentityModel.Токены.SecurityKeyIdentifierClause. Тип является интерфейсом или абстрактным классом и не может быть создан. Путь ‘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
).