В файле сервера используйте:
RemotingConfiguration.CustomErrorsEnabled(bool);
Я изменил пример кода, чтобы упростить быстрое внедрение кода в среду разработки C #. Я также намеренно не включил операторы using - это всего лишь образец кода.
В качестве примера у нас есть следующий класс, который мы хотим сериализовать:
public class DataToSerialize
{
public string Name { get; set; }
}
Если мы попытаемся сериализовать и десериализовать его так, как вы описываете строку где напечатано "То же", не будет выполнено (I ' m предполагая, что код будет работать в Windows с Environment.NewLine, замените на "\ r \ n", если это не так):
DataToSerialize test = new DataToSerialize();
test.Name = "TestData" + Environment.NewLine;
XmlSerializer configSerializer = new XmlSerializer(typeof(DataToSerialize));
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
configSerializer.Serialize(sw, test);
ms.Position = 0;
DataToSerialize deserialized = (DataToSerialize)configSerializer.Deserialize(ms);
if (deserialized.Name.Equals("TestData" + Environment.NewLine))
{
Console.WriteLine("Same");
}
Однако это можно исправить, вручную назначив XmlTextReader сериализатору с установленным свойством нормализации значение false (значение, используемое по умолчанию в сериализаторе, установлено в значение true):
DataToSerialize test = new DataToSerialize();
test.Name = "TestData" + Environment.NewLine;
XmlSerializer configSerializer = new XmlSerializer(typeof(DataToSerialize));
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
configSerializer.Serialize(sw, test);
ms.Position = 0;
XmlTextReader reader = new XmlTextReader(ms);
reader.Normalization = false;
DataToSerialize deserialized = (DataToSerialize)configSerializer.Deserialize(reader);
if (deserialized.Name.Equals("TestData" + Environment.NewLine))
{
Console.WriteLine("Same");
}
Теперь будет выводиться то же самое, что, если я не ошибаюсь, является требуемым поведением?
Если бы вы сериализовали , тогда XmlWriterSettings.NewLineHandling
( Replace
) стоило бы попробовать - но этого не произойдет. помогите читать. Немного неровно, но, возможно, сделайте это прямо в установщике:
private string text;
[XmlText]
public string Text {
get { return text; }
set
{
Regex r = new Regex("(?<!\r)\n");
text = r.Replace(value, "\r\n");
}
}