|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
using System;
using System.ServiceModel.Channels;
using SoapCore.Extensibility;
namespace SoapCore
{
/// <summary>
/// The default implementation of the fault provider when an unexpected exception occurs. This can be replaced or
/// extended by registering your own IFaultExceptionTransformer in the service collection on startup.
/// </summary>
public class DefaultFaultExceptionTransformer : IFaultExceptionTransformer
{
private readonly ExceptionTransformer _exceptionTransformer;
public DefaultFaultExceptionTransformer()
{
_exceptionTransformer = null;
}
public DefaultFaultExceptionTransformer(ExceptionTransformer exceptionTransformer)
{
_exceptionTransformer = exceptionTransformer;
}
public Message ProvideFault(Exception exception, MessageVersion messageVersion)
{
var bodyWriter = _exceptionTransformer == null ?
new FaultBodyWriter(exception, messageVersion) :
new FaultBodyWriter(exception, messageVersion, faultStringOverride: _exceptionTransformer.Transform(exception));
var soapCoreFaultMessage = Message.CreateMessage(messageVersion, null, bodyWriter);
return new CustomMessage(soapCoreFaultMessage);
}
}
}
|