mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 22:08:17 +08:00
tests to handle some error cases and docs
This commit is contained in:
@ -41,5 +41,6 @@
|
||||
QuotaExceededError = 36,
|
||||
RequestCanceled = 37,
|
||||
ConnectionToDownstreamServiceError = 38,
|
||||
CouldNotFindLoadBalancerCreator = 39,
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
namespace Ocelot.LoadBalancer.LoadBalancers
|
||||
{
|
||||
using Errors;
|
||||
|
||||
public class CouldNotFindLoadBalancerCreator : Error
|
||||
{
|
||||
public CouldNotFindLoadBalancerCreator(string message)
|
||||
: base(message, OcelotErrorCode.CouldNotFindLoadBalancerCreator)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -28,7 +28,13 @@
|
||||
|
||||
var serviceProvider = serviceProviderFactoryResponse.Data;
|
||||
var requestedType = reRoute.LoadBalancerOptions?.Type ?? nameof(NoLoadBalancer);
|
||||
var applicableCreator = _loadBalancerCreators.Single(c => c.Type == requestedType);
|
||||
var applicableCreator = _loadBalancerCreators.SingleOrDefault(c => c.Type == requestedType);
|
||||
|
||||
if (applicableCreator == null)
|
||||
{
|
||||
return new ErrorResponse<ILoadBalancer>(new CouldNotFindLoadBalancerCreator($"Could not find load balancer creator for Type: {requestedType}, please check your config specified the correct load balancer and that you have registered a class with the same name."));
|
||||
}
|
||||
|
||||
var createdLoadBalancer = applicableCreator.Create(reRoute, serviceProvider);
|
||||
return new OkResponse<ILoadBalancer>(createdLoadBalancer);
|
||||
}
|
||||
|
@ -45,7 +45,8 @@ namespace Ocelot.Responder
|
||||
return 502;
|
||||
}
|
||||
|
||||
if (errors.Any(e => e.Code == OcelotErrorCode.UnableToCompleteRequestError))
|
||||
if (errors.Any(e => e.Code == OcelotErrorCode.UnableToCompleteRequestError
|
||||
|| e.Code == OcelotErrorCode.CouldNotFindLoadBalancerCreator))
|
||||
{
|
||||
return 500;
|
||||
}
|
||||
|
Reference in New Issue
Block a user