Добрый день.
Мы разрабатываем приложение, которое использует Ваш программный продукт. Наше приложение успешно работает, но обнаружилась проблема при проведении нагрузочного тестирования. Весь наш код обложен try-catch, но тем не менее одно исключение не обрабатывается и в результате работа приложения останавливается. Вот трейс, который отображается при завершении приложения с ошибкой:
Необработанное исключение:Необработанное исключение: System.Reflection.TargetIn
vocationException: Адресат вызова создал исключение. ---> System.AccessViolation
Exception: Попытка чтения или записи в защищенную память. Это часто свидетельств
ует о том, что другая память повреждена.
в CryptoPro.Sharpei.NetDetours.NativeDetourEntryPoint.OnAssemblyLoadEvent(Ass
embly loadedAssembly)
в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnl
y, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boo
lean& bNeedSecurityCheck)
в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheck
This, Boolean fillCache)
в System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean sk
ipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
в System.Activator.CreateInstance(Type type, Boolean nonPublic)
в System.Xml.Serialization.TempAssembly.get_Contract()
в System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlR
eader xmlReader, XmlDeserializationEvents events, String encodingStyle)
в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, Str
ing encodingStyle, XmlDeserializationEvents events)
в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
в ********************(********) в **********************.cs:строка 377
в ********************(********) в **********************.cs:строка 134
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Obj
ect target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAtt
ributes, RuntimeType typeOwner)
в System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Obje
ct target, Object[] arguments, Signature sig, MethodAttributes methodAttributes,
RuntimeType typeOwner)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA
ttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibi
lityChecks)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA
ttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
в ********************(********) в **********************.cs:строка 83
в ********************(********) в **********************.cs:строка 100
в ********************(********) в **********************.c
s:строка 79
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.runTryCode(Object userData)
в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCle
anup(TryCode code, CleanupCode backoutCode, Object userData)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionCon
text, ContextCallback callback, Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co
ntextCallback callback, Object state, Boolean ignoreSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co
ntextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart(Object obj)
Звездочками помечены методы и классы нашего приложения.
Хотелось бы узнать, из-за чего данная проблема и возможно есть какое-то обновление вашего продукта, исправляющее эту ошибку?
Ниже приведен пример кода, вызывающего исключительную ситуацию.
public sealed class classAController : IclassA
{
private static readonly classAController instance = new classAController();
private classAController(){}
public static classAController Instance
{
get { return instance; }
}
public string method1(string arg1)
{
document requestDocument;
documentZapros ulRequestElement;
try
{
var xmlDocument = new XmlDocument();
var documentRootAttribute = new XmlRootAttribute("document");
var documentSerializer = new XmlSerializer(typeof (document), documentRootAttribute);
var ulRootAttribute = new XmlRootAttribute("zapros");
var ulSerializer = new XmlSerializer(typeof (documentZapros), ulRootAttribute);
var responseDocumentSerializer = new XmlSerializer(typeof (document1));
var documentReaderSettings = new XmlReaderSettings();
var ulReaderSettings = new XmlReaderSettings();
xmlDocument.LoadXml(arg1);
var documentStream = new StringReader(arg1);
var reader = XmlReader.Create(documentStream, documentReaderSettings);
//судя по трейсу в след строке происходит исключение. На десериализации.
requestDocument = (document) documentSerializer.Deserialize(reader);
reader.Close();
documentStream.Close();
.......................................................
}
catch (Exception ex)
{
throw new myException( "bla bla bla", ex);
}
}
}