diff --git a/src/Ocelot/Requester/HttpExeptionToErrorMapper.cs b/src/Ocelot/Requester/HttpExeptionToErrorMapper.cs index 100d01f4..f2fbad2d 100644 --- a/src/Ocelot/Requester/HttpExeptionToErrorMapper.cs +++ b/src/Ocelot/Requester/HttpExeptionToErrorMapper.cs @@ -1,6 +1,6 @@ namespace Ocelot.Requester { - using Errors; + using Ocelot.Errors; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; @@ -23,7 +23,7 @@ namespace Ocelot.Requester return _mappers[type](exception); } - if (type == typeof(OperationCanceledException)) + if (type == typeof(OperationCanceledException) || type.IsSubclassOf(typeof(OperationCanceledException))) { return new RequestCanceledError(exception.Message); } diff --git a/test/Ocelot.UnitTests/Requester/HttpExeptionToErrorMapperTests.cs b/test/Ocelot.UnitTests/Requester/HttpExeptionToErrorMapperTests.cs index bad8668e..14413aad 100644 --- a/test/Ocelot.UnitTests/Requester/HttpExeptionToErrorMapperTests.cs +++ b/test/Ocelot.UnitTests/Requester/HttpExeptionToErrorMapperTests.cs @@ -38,6 +38,14 @@ error.ShouldBeOfType(); } + [Fact] + public void should_return_request_canceled_for_subtype() + { + var error = _mapper.Map(new SomeException()); + + error.ShouldBeOfType(); + } + [Fact] public void should_return_error_from_mapper() { @@ -56,5 +64,8 @@ error.ShouldBeOfType(); } + + private class SomeException : OperationCanceledException + { } } }