Клиент работает с двумя терминалами MC32N0. С одним проблем нет, на другом часто программа зависает, приходится перегружать. После перезагрузки документ не удается восстановить. Забрал терминал, загрузил последний ром от производителя, после этого установил Mobile Smarts, удалили не сервере всю номенклатуру и заново ее загрузили. Запустили «подбор заказа» несколько позиции отсканировались без проблем, потом он опять завис.
В логе ошибок следующие записи
MobileSMARTS.exe; Подбор заказа mainApp; 19/01/2018 11:56:44.779 ERROR
ADDITION TEXT: Подбор заказа: Действие (OperationAction) «1»
MESSAGE: Ошибка при десериализации файла ‘ApplicationMobileSMARTSDocumentsf24c4c21-98e0-4889-a826-ae04f9992c74Cleverence.Warehouse.Environment.xml’, смещение: 198513
TYPE: System.Runtime.Serialization.SerializationException
[STACK TRACE]
at Cleverence.DataCollection.Xml.XmlSerializer.DeserializeFilePartially(String path, Int64 offset)
at Cleverence.Warehouse.Operation._deserializeActionsInternal()
at Cleverence.Warehouse.Operation.DeserializeActions()
at Cleverence.Warehouse.Operation.get_Actions()
at Cleverence.Warehouse.Operation.Cleverence.Warehouse.IActivity.GetActionsForActivity(IActionWorkflow wf)
at Cleverence.Warehouse.Compact.OperationAction.get_Actions()
at Cleverence.Warehouse.Compact.OperationAction.Begin()
at Cleverence.Warehouse.Compact.ActionsApplication.StartApplication()
[STACK TRACE]
—INNER EXCEPTION—
MESSAGE: The process can not access the file ‘ApplicationMobileSMARTSDocumentsf24c4c21-98e0-4889-a826-ae04f9992c74Cleverence.Warehouse.Environment.xml’ because it is being used by another process.
TYPE: System.IO.IOException
[STACK TRACE]
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Cleverence.DataCollection.Xml.XmlSerializer.DeserializeFilePartially(String path, Int64 offset)
at Cleverence.Warehouse.Operation._deserializeActionsInternal()
at Cleverence.Warehouse.Operation.DeserializeActions()
at Cleverence.Warehouse.Operation.get_Actions()
at Cleverence.Warehouse.Operation.Cleverence.Warehouse.IActivity.GetActionsForActivity(IActionWorkflow wf)
at Cleverence.Warehouse.Compact.OperationAction.get_Actions()
at Cleverence.Warehouse.Compact.OperationAction.Begin()
at Cleverence.Warehouse.Compact.ActionsApplication.StartApplication()
[STACK TRACE]
На другом терминале подобных проблем не возникает. Что можно сделать в данной ситуации
|
Filislav 339 / 285 / 62 Регистрация: 02.09.2010 Сообщений: 547 |
||||
|
1 |
||||
|
05.07.2011, 10:12. Показов 10112. Ответов 10 Метки нет (Все метки)
Есть программа — записная книжка, записи сериализуются в Xml. Если программа запускается первый раз и файла с сериализованными записями еще не созданно, то все работает хорошо, сериализуется.
0 |
|
Мохаммед Али 131 / 69 / 5 Регистрация: 14.08.2009 Сообщений: 916 |
|
|
05.07.2011, 10:16 |
2 |
|
а что такое Dialer где он описан?
0 |
|
Filislav 339 / 285 / 62 Регистрация: 02.09.2010 Сообщений: 547 |
||||
|
05.07.2011, 10:26 [ТС] |
3 |
|||
|
Dialer это сриализуемая коллекция обьектов Entrie. Вот он:
0 |
|
Мохаммед Али 131 / 69 / 5 Регистрация: 14.08.2009 Сообщений: 916 |
|
|
05.07.2011, 11:42 |
4 |
|
ну не знай может надо к аррей лист контент прибавит тэг [NonSerialized] и почему у вас аррей лист а там тип как бы неизвестен в аттрибутах указываете Ентри, можете попробовать сделать через List<type>.
0 |
|
Sanprof 96 / 96 / 16 Регистрация: 28.01.2008 Сообщений: 426 |
||||
|
05.07.2011, 11:46 |
5 |
|||
|
я уверен такое сообщение выдает когда сериализация прошла не до конца, тоесть часть свойств сериализовалась, потом возникла ошибка, и файл не дописался.
0 |
|
Мохаммед Али 131 / 69 / 5 Регистрация: 14.08.2009 Сообщений: 916 |
|
|
05.07.2011, 11:53 |
6 |
|
Ну ты понаписал) испугал человека, тут дело не в коде сериализации мне кажется а в описании класса обьекта сериализации.
1 |
|
Sanprof 96 / 96 / 16 Регистрация: 28.01.2008 Сообщений: 426 |
||||
|
05.07.2011, 12:22 |
7 |
|||
|
тут дело не в коде сериализации мне кажется а в описании класса обьекта сериализации десериализация не может быть выполнена, если была выполнена не правильная сериализация.
1 |
|
Filislav 339 / 285 / 62 Регистрация: 02.09.2010 Сообщений: 547 |
||||||||
|
05.07.2011, 12:40 [ТС] |
8 |
|||||||
|
Нашел я ошибку у себя, все заработало. И сериализация у меня выполнена просто без лишних наворотов и правильно. Вместо:
Надо было:
Просто просмотрел.
0 |
|
Мохаммед Али 131 / 69 / 5 Регистрация: 14.08.2009 Сообщений: 916 |
|
|
05.07.2011, 12:41 |
9 |
|
да да он прав чо то я упустил)
0 |
|
Filislav 339 / 285 / 62 Регистрация: 02.09.2010 Сообщений: 547 |
||||
|
05.07.2011, 13:21 [ТС] |
10 |
|||
|
Вопрос не по теме, касаемо моей программы. Как мне ArrayList отсортировать. Мне надо чтобы в DataGridView выводил в порядке возрастания даты. Свойва OrderBy() у нее нету. Подскажите плиз.
Сортировка нужна по en.Dt.ToShortDateString().
0 |
|
96 / 96 / 16 Регистрация: 28.01.2008 Сообщений: 426 |
|
|
05.07.2011, 13:28 |
11 |
|
Filislav, почитайте про лямбда-выражения, в инете много ссылок как сортировать листы.
1 |
There is no problem with serialize but deserializing throw error like below. I shared all related classes and error. What should I do to deserialize this file.
yaml file (created by yaml serializing) :
Edits: 0:
Id: 20
Type: AddOrUpdate
Operation:
book:
ElementName: a
ArithmeticExpression: asd
ConditionExpression: a
c# classes :
public class DbContext
{
public Dictionary<int, DbModel> Edits { get; set; }
}
public class DbModel
{
public int Id { get; set; }
public string Type { get; set; }
public Dictionary<string, Operation> Operation { get; set; }
public DbModel(int id, string type, Dictionary<string, Operation> op)
{
Id = id;
Type = type;
Operation = op;
}
}
public class Operation
{
public string ElementName { get; set; }
public string ArithmeticExpression { get; set; }
public string ConditionExpression { get; set; }
public Operation(string elemName, string ArithmetticExp, string ConditionExp)
{
ElementName = elemName;
ArithmeticExpression = ArithmetticExp;
ConditionExpression = ConditionExp;
}
}
class DatabaseOperation
{
public static DbContext DbContext { get; set; }
public const string yamlEditString = "C:\Data\setting.yml";
static DatabaseOperation()
{
DbContext = ReadAllDataFromFile().Result;
}
public static Task<DbContext> ReadAllDataFromFile()
{
DbContext dbCon = new DbContext();
if (File.Exists(yamlEditString))
{
var deserializer = new Deserializer();
string readedData = File.ReadAllText(yamlEditString);
//dbCon.Edits = deserializer.Deserialize<List<DbModel>>(readedData);
try
{
dbCon = deserializer.Deserialize<DbContext>(readedData);
}
catch (Exception ex)
{
throw;
}
}
else
{
dbCon.Edits = new Dictionary<int, DbModel>();
}
return Task.FromResult(dbCon);
}
public static Task WriteAllDataToFile(DbContext dbCon)
{
var serializer = new Serializer();
File.WriteAllText(yamlEditString, serializer.Serialize(dbCon));
}
}
getting this error :
(Line: 7, Col: 9, Idx: 86) — (Line: 7, Col: 9, Idx: 86): Exception during deserialization
«YamlDotNet»
inner exception :
Failed to create an instance of type ‘YamlEdit.Operation’.
at
YamlDotNet.Serialization.ObjectFactories.DefaultObjectFactory.Create(Type
type) at
YamlDotNet.Serialization.NodeDeserializers.ObjectNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser
parser, Type expectedType, Func`3 nestedObjectDeserializer, Object&
value) at
YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser
parser, Type expectedType, SerializerState state, IValueDeserializer
nestedObjectDeserializer)
StackTrace :
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
at YamlDotNet.Serialization.NodeDeserializers.DictionaryNodeDeserializer.DeserializeHelper(Type tKey, Type tValue, IParser parser, Func`3 nestedObjectDeserializer, IDictionary result)
at YamlDotNet.Serialization.NodeDeserializers.DictionaryNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
at YamlDotNet.Serialization.NodeDeserializers.ObjectNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.Deserializer.Deserialize(IParser parser, Type type)
at YamlDotNet.Serialization.Deserializer.Deserialize[T](String input)
at YamlEdit.DatabaseOperation.ReadAllDataFromFile() in D:RepositoriesYamlEditDatabaseOperation.cs:line 35
There is no problem with serialize but deserializing throw error like below. I shared all related classes and error. What should I do to deserialize this file.
yaml file (created by yaml serializing) :
Edits: 0:
Id: 20
Type: AddOrUpdate
Operation:
book:
ElementName: a
ArithmeticExpression: asd
ConditionExpression: a
c# classes :
public class DbContext
{
public Dictionary<int, DbModel> Edits { get; set; }
}
public class DbModel
{
public int Id { get; set; }
public string Type { get; set; }
public Dictionary<string, Operation> Operation { get; set; }
public DbModel(int id, string type, Dictionary<string, Operation> op)
{
Id = id;
Type = type;
Operation = op;
}
}
public class Operation
{
public string ElementName { get; set; }
public string ArithmeticExpression { get; set; }
public string ConditionExpression { get; set; }
public Operation(string elemName, string ArithmetticExp, string ConditionExp)
{
ElementName = elemName;
ArithmeticExpression = ArithmetticExp;
ConditionExpression = ConditionExp;
}
}
class DatabaseOperation
{
public static DbContext DbContext { get; set; }
public const string yamlEditString = "C:\Data\setting.yml";
static DatabaseOperation()
{
DbContext = ReadAllDataFromFile().Result;
}
public static Task<DbContext> ReadAllDataFromFile()
{
DbContext dbCon = new DbContext();
if (File.Exists(yamlEditString))
{
var deserializer = new Deserializer();
string readedData = File.ReadAllText(yamlEditString);
//dbCon.Edits = deserializer.Deserialize<List<DbModel>>(readedData);
try
{
dbCon = deserializer.Deserialize<DbContext>(readedData);
}
catch (Exception ex)
{
throw;
}
}
else
{
dbCon.Edits = new Dictionary<int, DbModel>();
}
return Task.FromResult(dbCon);
}
public static Task WriteAllDataToFile(DbContext dbCon)
{
var serializer = new Serializer();
File.WriteAllText(yamlEditString, serializer.Serialize(dbCon));
}
}
getting this error :
(Line: 7, Col: 9, Idx: 86) — (Line: 7, Col: 9, Idx: 86): Exception during deserialization
«YamlDotNet»
inner exception :
Failed to create an instance of type ‘YamlEdit.Operation’.
at
YamlDotNet.Serialization.ObjectFactories.DefaultObjectFactory.Create(Type
type) at
YamlDotNet.Serialization.NodeDeserializers.ObjectNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser
parser, Type expectedType, Func`3 nestedObjectDeserializer, Object&
value) at
YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser
parser, Type expectedType, SerializerState state, IValueDeserializer
nestedObjectDeserializer)
StackTrace :
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
at YamlDotNet.Serialization.NodeDeserializers.DictionaryNodeDeserializer.DeserializeHelper(Type tKey, Type tValue, IParser parser, Func`3 nestedObjectDeserializer, IDictionary result)
at YamlDotNet.Serialization.NodeDeserializers.DictionaryNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.<>c__DisplayClass3_0.<DeserializeValue>b__0(IParser r, Type t)
at YamlDotNet.Serialization.NodeDeserializers.ObjectNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value)
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
at YamlDotNet.Serialization.Deserializer.Deserialize(IParser parser, Type type)
at YamlDotNet.Serialization.Deserializer.Deserialize[T](String input)
at YamlEdit.DatabaseOperation.ReadAllDataFromFile() in D:RepositoriesYamlEditDatabaseOperation.cs:line 35
Я десериализирую следующий файл XML. Использование XML-сериализатора с VSTS 2008 + С# +.Net 3.5.
Вот файл XML.
<?xml version="1.0" encoding="utf-8"?>
<Person><Name>=b?olu</Name></Person>
Вот снимок экрана для отображения файла XML и двоичного формата файла XML,


Если есть какие-то решения принять таких персонажей, это будет здорово! Поскольку мой XML файл большой, и если такие символы действительно недопустимы и должны быть отфильтрованы, я хочу сохранить оставшееся содержимое XML файла после десериализации.
В настоящее время десериализация XML завершается с InvalidOperationException, и вся информация XML файла будет потеряна.
На самом деле, при открытии этого XML файла в VSTS возникает ошибка, подобная этой: ошибка 1 символа ‘?’, Шестнадцатеричное значение 0xffff недопустимо в документах XML. Я запутался, так как в двоичной форме нет значений 0xffff.
Любые решения или идеи?
EDIT1: вот мой код, который используется для десериализации файла XML,
static void Foo()
{
XmlSerializer s = new XmlSerializer(typeof(Person));
StreamReader file = new StreamReader("bug.xml");
s.Deserialize(file);
}
public class Person
{
public string Name;
}
Всем доброго времени суток, написал 2 метода 1-й сериализации, 2-й — десериализации, и при десериализации получаю следующие исключение:
Не удалось привести тип объекта «System.Int32» к типу
«binary.Classes.Serializ».
[Serializable]
class Serializ
{
public Int32 Line { get; set; }
BinaryFormatter formatter = new BinaryFormatter();
public void SerializSave (Int32 _line)
{
Line = _line;
using (FileStream fs = new FileStream(@"E:DELETEnr.dat", FileMode.Append))
{
formatter.Serialize(fs, Line);
Console.WriteLine("Объект сериализован");
}
}
public void SerializRead()
{
using (FileStream fs = new FileStream(@"E:DELETEnr.dat", FileMode.Open))
{
Serializ _serial = (Serializ)formatter.Deserialize(fs);
Console.WriteLine("Объект десериализован");
Console.WriteLine("Прочитано: {0}", _serial.Line);
}
}
}
Как исправить ошибку данного характера ? что я не так сделал ? спасибо
Спасибо за пример, но теперь я получаю такое исключение:
Additional information: Тип
«System.Runtime.Serialization.Formatters.Binary.BinaryFormatter» в
сборке «mscorlib, Version=4.0.0.0, Culture=neutral,
Пробовал и так FileMode.Append и так FileMode.Create
Странно что на этот раз не так? и еще хотел спросить FileMode.Create — даст мне дозапись данных в файл ? мне это важно. Спасибо
