Статус: Новичок
Группы: Участники
Зарегистрирован: 23.04.2014(UTC) Сообщений: 3
|
Делаю следующее: Система Windows 8 Professional. Устанавливаю КриптоПро CSP 4.0, после установки перезагружаюсь, устанавливаю КриптоПро .NET (версия 1.0.5210.0), перезагружаюсь. Создаю в Visual Studio проект Windows Store (Blank App). Ставлю из NuGet пакет Newtonsoft.Json (сейчас последняя версия 6.0.3). В приложение добавляю текстовое поле для вывода результата и кнопку. Код обработки нажатия кнопки: Код:
// Реакция на нажатие кнопки
private void OnSerializeJson(object sender, RoutedEventArgs e)
{
// Создаем объект для сериализации в JSON
var product = new Product
{
Name = "Apple",
Expiry = new DateTime(2008, 12, 28)
};
// Сериализация с помощью Newtonsoft.Json
// Падает на этой строчке
string json = JsonConvert.SerializeObject(product);
// Вывод результата в текстовое поле. В результате должно быть примерно следующее
//{
// "name": "Apple",
// "expiry": "2008-12-28T00:00:00",
//}
Result.Text = json;
}
Описание класса Product: Код:
// Класс продукта, описан с помощью Newtonsoft.Json аннотаций
[JsonObject(MemberSerialization.OptIn)]
public class Product
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("expiry")]
public DateTime Expiry { get; set; }
}
При попытке сериализации падает со следующей ошибкой: Код:
Newtonsoft.Json.SerializationException: "Error getting value from 'Name' on 'CryptoProTestApp.Product'."
System.Runtime.InteropServices.COMException: "Такой запрос не поддерживается. (Исключение из HRESULT: 0x80070032)"
StackTrace:
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
at Newtonsoft.Json.JsonConvert.SerializeObject(Object value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.SerializeObject(Object value)
at CryptoProTestApp.MainPage.OnSerializeJson(Object sender, RoutedEventArgs e) in c:\Users\artem_000\Documents\Visual Studio 2012\Projects\CryptoProTestApp\CryptoProTestApp\MainPage.xaml.cs:line 46
После удаления КриптоПро .NET из системы, падать перестает, сериализация проходит. Исходники проекта, создано в Visual Studio 2012: CryptoProTestApp.zipОтредактировано пользователем 28 апреля 2014 г. 6:54:45(UTC)
| Причина: Не указана
|