44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
namespace System.ServiceModel.Dispatcher
|
|
{
|
|
using System;
|
|
using System.ServiceModel.Channels;
|
|
using System.Collections;
|
|
|
|
class ServiceErrorHandler : DurableErrorHandler
|
|
{
|
|
const string dataKey = "System.ServiceModel.Dispatcher.ServiceErrorHandler.MarkExeption";
|
|
|
|
public ServiceErrorHandler(bool debug)
|
|
: base(debug)
|
|
{
|
|
}
|
|
|
|
public static void MarkException(Exception toMark)
|
|
{
|
|
// From MSDN: The OutOfMemoryException, StackOverflowException and ThreadAbortException
|
|
// classes always return a null reference for the value of the Data property.
|
|
// These are fatal exceptions and therefore we don't care that we can't mark them.
|
|
IDictionary data = toMark.Data;
|
|
if (data != null && !data.IsReadOnly && !data.IsFixedSize)
|
|
{
|
|
data.Add(dataKey, true);
|
|
}
|
|
}
|
|
|
|
protected override bool IsUserCodeException(Exception error)
|
|
{
|
|
IDictionary data = error.Data;
|
|
|
|
if (data != null && data.Contains(dataKey))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|